📜  使用Python将 Excel 转换为 PDF(1)

📅  最后修改于: 2023-12-03 15:36:36.625000             🧑  作者: Mango

使用Python将 Excel 转换为 PDF

在实际开发中,我们经常需要将 Excel 文件转换为 PDF。本文将介绍如何使用 Python 实现 Excel 转 PDF。

安装依赖

在开始之前,请确保已经安装了以下依赖:

  • openpyxl:用于读取 Excel 文件
  • xhtml2pdf:将 HTML 转换为 PDF

安装方式如下:

pip install openpyxl xhtml2pdf
实现步骤
  1. 读取 Excel 文件

使用 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)
  1. 将数据转换为 HTML

使用获取到的数据,生成 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>'
  1. 将 HTML 转换为 PDF

使用 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 的完整代码。