使用 Python 将 CSV 转为 PDF(含表格样式美化)

CSV文件将表格数据采用纯文本形式来存储, 其通用性超乎寻常地强, 然而, 在正式的场合当中, 像是向客户去交付数据报表, 又或者是归档项目文档, 再或者是打印材料的时候, 它的不足之处就露出来喽: 没有格式, 列宽不均匀, 分页显得十分混乱, 使得阅读体验大幅下降。

恰好PDF弥补了这些缺陷, 它排版固定, 跨平台显示始终保持一致, 是正式文档的首要选择格式。 本文阐述一种简便直接的办法, 借助Spire.XLS for库, 把CSV文件加载成工作簿, 对表格样式作出调整, 接着导出为规范整齐的PDF文档。整个流程仅仅需要十几行代码, 不需要安装Excel。

准备工作

在开始编码之前,先安装所需的依赖库:

复制代码
pip install Spire.XLS

有着具备强大功能的Excel操作库特性的Spire.XLS for, 支持实现读取操作, 支持达成写入操作, 支持完成转换等多种操作, 并且不存在对任何本地Excel组件的依赖。

完整代码实现

跟着来, 这儿有一段完整的转换代码, 它包含加载这一核心步骤, 它涵盖样式调整这一关键步骤, 它涉及导出这一重要步骤:

复制代码
from spire.xls import *
from spire.xls.common import *
# 创建 Workbook 对象
workbook = Workbook()
# 加载 CSV 文件(参数:文件路径, 分隔符, 起始行, 起始列)
workbook.LoadFromFile("sample.csv", ",", 1, 1)
# 设置页面缩放,确保内容适配一页
workbook.ConverterSetting.SheetFitToPage = True
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 自动调整每一列的列宽,避免内容被截断
i = 1
while i < sheet.Columns.Length:
    sheet.AutoFitColumn(i)
    i += 1
# 导出为 PDF
workbook.SaveToFile("CSVToPDF.pdf", FileFormat.PDF)
workbook.Dispose()

关键步骤解析1. 加载CSV文件

是核心操作类, 方法除传入文件路径外, 还支持指定分隔符, 支持指定起始读取行, 支持指定起始读取列, 例如"", 1, 1表明以逗号作分隔符, 从第一行第一列起始读取, 若你的CSV文件用制表符或分号分隔, 仅替换为"\t"或";"就行。

  1. 一页完整显示

.. = True这一设置, 是那种容易被人忽视, 然而却极其关键重要的。要是不把此项开启, 在表格列数较多的情形下, 导出的PDF就有可能会把内容分散拆分到好多页, 阅读的时候就得来回地翻页, 这实在是非常不方便的。开启了之后呢, PDF页面会自行进行缩放, 从而确保所有列能够在一页里面完整地呈现出来。

  1. 自动调整列宽

透过循环去开展对 sheet.(i) 的调用操作, 以使得每一列的宽度依据该列之中最长的文本内容来进行自动的调整。如此一来, 既能够防止文字出现重叠现象或者显示成"####", 同时还能够促使表格看上去更为整洁且专业化。

  1. 导出为PDF

先调用最终的那个, 并且明确指定为.PDF, 这样就能生成PDF文件了。有一种方法是专门用来释放资源的, 要养成良好的习惯。

进一步美化表格

在上面所呈现的示例之中, 已然能够对基本所需予以满足, 然而要是你期望PDF的整体样式变得更为精致一些的话, Spire.XLS这一工具还额外提供了更多的可供定制的选项。比如说, 针对字体进行设定, 对字号加以确定, 将对齐方式予以调整,又或者对页面方向作出改变:

复制代码
# 设置全局字体和字号
sheet.AllocatedRange.Style.Font.FontName = "Arial"
sheet.AllocatedRange.Style.Font.Size = 14
# 设置水平居中对齐
sheet.AllocatedRange.Style.HorizontalAlignment = HorizontalAlignType.Center
# 将页面方向调整为横向
sheet.PageSetup.Orientation = PageOrientationType.Landscape

这些设置能让导出的PDF更加符合正式文档的要求。

适用场景

这一方案尤其适合以下场景:

总结

采用Spire.XLS for , 仅仅十几行代码就能达成CSV到PDF的转换, 与此同时还能够对表格样式予以灵活操控。 跟 的搭配运用, 乃是确保输出页面整洁而美观的关键之所在。要是你正在为CSV的"素颜"难题所困扰, 那么不妨尝试一下此项方案。

相关推荐
2601_962077981 小时前
利用Python,四步掌握机器学习
python·机器学习·数据挖掘·数据分析·编程
axinawang1 小时前
requests--爬取网页内容
python
盼小辉丶2 小时前
PyTorch强化学习实战——融合人类示范数据的高效强化学习
人工智能·pytorch·python·深度学习·强化学习
聪明蛋子哟2 小时前
MCP协议深度落地:如何用Python/Java双语言实现统一的工具调用网关?
java·开发语言·python
李妍.2 小时前
PyTorch GPU 版安装记录(RTX 5060 + Python 3.14)
人工智能·pytorch·python
90后的晨仔2 小时前
Python 基础语法完整汇总
python
广慈新医知2 小时前
当健康问题越来越复杂,AI更适合先帮我们“把问题问清楚”
人工智能·python
一晌小贪欢2 小时前
python-第27天:Python面向对象详解
开发语言·python·数据可视化·面向对象·python办公
青 春 记 忆2 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode