📅  最后修改于: 2023-12-03 15:36:36.625000             🧑  作者: Mango
在实际开发中,我们经常需要将 Excel 文件转换为 PDF。本文将介绍如何使用 Python 实现 Excel 转 PDF。
在开始之前,请确保已经安装了以下依赖:
安装方式如下:
pip install openpyxl xhtml2pdf
使用 openpyxl
读取 Excel 文件并获取需要导出的数据。以下代码读取名为 data.xlsx
的 Excel 文件,获取第一个 sheet 的数据。
import openpyxl
workbook = openpyxl.load_workbook('data.xlsx')
sheet = workbook.active
data = []
for row in sheet.iter_rows(min_row=2):
row_data = []
for cell in row:
row_data.append(cell.value)
data.append(row_data)
使用获取到的数据,生成 HTML 表格。以下代码生成的表格类似于 Excel 中的表格。
html = '<table border="1" cellspacing="0" cellpadding="3">'
html += '<tr>'
for column in sheet.columns:
html += f'<th>{column[0].value or ""}</th>'
html += '</tr>'
for row in sheet.iter_rows(min_row=2):
html += '<tr>'
for cell in row:
html += f'<td>{cell.value or ""}</td>'
html += '</tr>'
html += '</table>'
使用 xhtml2pdf
将生成的 HTML 转换为 PDF。以下代码生成名为 output.pdf
的 PDF 文件。
from io import BytesIO
from xhtml2pdf import pisa
pdf = BytesIO()
pisa.CreatePDF(html, pdf)
with open('output.pdf', 'wb') as f:
f.write(pdf.getbuffer())
import openpyxl
from io import BytesIO
from xhtml2pdf import pisa
workbook = openpyxl.load_workbook('data.xlsx')
sheet = workbook.active
data = []
for row in sheet.iter_rows(min_row=2):
row_data = []
for cell in row:
row_data.append(cell.value)
data.append(row_data)
html = '<table border="1" cellspacing="0" cellpadding="3">'
html += '<tr>'
for column in sheet.columns:
html += f'<th>{column[0].value or ""}</th>'
html += '</tr>'
for row in sheet.iter_rows(min_row=2):
html += '<tr>'
for cell in row:
html += f'<td>{cell.value or ""}</td>'
html += '</tr>'
html += '</table>'
pdf = BytesIO()
pisa.CreatePDF(html, pdf)
with open('output.pdf', 'wb') as f:
f.write(pdf.getbuffer())
以上就是使用 Python 将 Excel 文件转换为 PDF 的完整代码。