Python 提取 Excel 数据并生成多页 PDF 文件
使用 Python 的 openpyxl 库读取 Excel 文件,并使用 reportlab 库生成 PDF 文件,可以实现将 Excel 表格中指定列的数据,以每个单元格对应一个 PDF 文件的方式保存到 PDF 文件中。
首先,你需要安装这两个库:
pip install openpyxl
pip install reportlab
然后,可以使用以下代码实现你的需求:
from openpyxl import load_workbook
from reportlab.lib.pagesizes import landscape
from reportlab.pdfgen import canvas
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm
from reportlab.platypus import Paragraph
from reportlab.lib import colors
# 加载 Excel 文件
workbook = load_workbook('your_excel_file.xlsx')
sheet = workbook['sheet1']
# 获取列名为'贺卡内容'的列索引
column_index = None
for column in sheet.iter_cols():
if column[0].value == '贺卡内容':
column_index = column[0].column
break
if column_index is None:
raise ValueError('找不到列名为'贺卡内容'的列')
# 获取列名为'运单号'的列数据
pdf_file_names = []
for cell in sheet[column_index][1:]:
pdf_file_names.append(cell.value)
# 创建 PDF 文件
pdf = canvas.Canvas('output.pdf', pagesize=landscape((1450*mm, 1000*mm)))
# 设置样式
styles = getSampleStyleSheet()
style = styles['BodyText']
style.alignment = 1 # 上下居中和左右居中
style.fontSize = 12.75
style.fontName = 'SimSun'
style.textColor = colors.black
style.leading = 14 # 行间距
style.spaceAfter = 0 # 段后距离
style.spaceBefore = 0 # 段前距离
style.spaceBetween = 0 # 段间距
style.fontName = 'SimSun-Bold' # 设置字体加粗
# 根据列名为'运单号'的列数据生成 PDF 文件
for file_name in pdf_file_names:
pdf.showPage()
pdf.setFont('SimSun-Bold', 12.75)
pdf.drawString(10*mm, 290*mm, file_name)
pdf.save()
请注意替换代码中的your_excel_file.xlsx为你的 Excel 文件路径。生成的 PDF 文件将保存为output.pdf。
这段代码会遍历 Excel 文件中列名为'贺卡内容'的数据,并以每个单元格的数据作为文件名在 PDF 文件中生成一个页面。页面尺寸为高度 1000mm,宽度 1450mm。数据的格式样式为字体为宋体,粗细为加粗,字号大小为 12.75,文字对齐方式为上下居中和左右居中。
原文地址: https://www.cveoy.top/t/topic/phkB 著作权归作者所有。请勿转载和采集!