FPDF Python做表格
在Python中,我们可以使用FPDF库来创建PDF文件。FPDF是一个纯Python的库,用于创建PDF文件,可以生成表格、图形和文本。本文将介绍如何使用FPDF库来创建表格,并提供代码示例。
准备工作
在开始之前,我们需要安装FPDF库。可以使用pip来安装FPDF库,打开命令行窗口并执行以下命令:
pip install fpdf
安装完成后,我们可以开始编写代码。
创建PDF文件
首先,我们需要导入FPDF库,并创建一个PDF对象。
from fpdf import FPDF
pdf = FPDF()
接下来,我们可以设置PDF文件的属性,例如页面大小和页面方向。
pdf.set_auto_page_break(auto=True, margin=15)
pdf.add_page(orientation="L", format="A4")
在上面的代码中,我们使用set_auto_page_break()
方法来设置自动分页,并传入True
来启用自动分页。margin
参数用于设置页面边距。
然后,我们使用add_page()
方法来添加一个新页面。orientation
参数用于设置页面方向,可以是"P"
(纵向)或"L"
(横向)。format
参数用于设置页面大小,例如"A4"
。
创建表格
在创建表格之前,我们需要定义表格的列和行。我们可以使用列表来定义列的宽度、列的标题和行的数据。
column_widths = [40, 60, 80]
column_titles = ["Name", "Age", "Country"]
rows_data = [
["John Doe", "25", "USA"],
["Jane Smith", "30", "Canada"],
["David Lee", "35", "UK"]
]
在上面的代码中,column_widths
是一个包含列宽度的列表,column_titles
是一个包含列标题的列表,rows_data
是一个包含行数据的列表。
接下来,我们可以创建表格并设置表格的属性。
pdf.set_font("Arial", "B", 12)
pdf.cell(column_widths[0], 10, column_titles[0], 1)
pdf.cell(column_widths[1], 10, column_titles[1], 1)
pdf.cell(column_widths[2], 10, column_titles[2], 1)
pdf.ln()
pdf.set_font("Arial", "", 12)
for row in rows_data:
pdf.cell(column_widths[0], 10, str(row[0]), 1)
pdf.cell(column_widths[1], 10, str(row[1]), 1)
pdf.cell(column_widths[2], 10, str(row[2]), 1)
pdf.ln()
在上面的代码中,我们首先设置表格的字体样式,使用set_font()
方法来设置字体,"Arial"
是字体名称,"B"
表示粗体,12
表示字体大小。
然后,我们使用cell()
方法来创建单元格,传入单元格的宽度、高度、内容和边框样式。ln()
方法用于换行。
保存PDF文件
最后,我们可以保存PDF文件。
pdf.output("table.pdf")
在上面的代码中,我们使用output()
方法来保存PDF文件,传入文件名作为参数。
完整代码
下面是完整的代码示例:
from fpdf import FPDF
pdf = FPDF()
pdf.set_auto_page_break(auto=True, margin=15)
pdf.add_page(orientation="L", format="A4")
column_widths = [40, 60, 80]
column_titles = ["Name", "Age", "Country"]
rows_data = [
["John Doe", "25", "USA"],
["Jane Smith", "30", "Canada"],
["David Lee", "35", "UK"]
]
pdf.set_font("Arial", "B", 12)
pdf.cell(column_widths[0], 10, column_titles[0], 1)
pdf.cell(column_widths[1], 10, column_titles[1], 1)
pdf.cell(column_widths[2], 10, column_titles[2], 1)
pdf.ln()
pdf.set_font("Arial", "", 12)
for row in rows_data:
pdf.cell(column_widths[0], 10, str(row[0]), 1)
pdf.cell(column_widths[1], 10, str(row[1]), 1)
pdf.cell(column_widths[2], 10, str(row[2]), 1