Python处理Excel表格专题,并打包为exe程序
一. 案例一:文件比对
1.1 需求
现有一个文件夹,里面存放若干PDF文件。还有一个Excel表格,记录了这些PDF的文件名。现在要进行双向核查,即 Excel表格中的PDF文件名 和 文件夹中的PDF 是否一一对应,有无缺漏。
1.2 实现
大致思路:使用xlrd读取Excel表格进行比对
1 | import os |
二. 案例二:合并表单
2.1 需求
现有一个 Excel 文件,里面包含多个 Table,现在要合并部分 Table(它们的表头都一样),生成新的 Table 并写入到新的 Excel 文件中,尽量保证格式不变。
2.2 实现
Python 擅长的是对数据进行处理,如果要完全保证格式一致会很困难,因此最佳实践方案为:先手动创建一个模版 Excel,把大致格式先调整好,然后 Python 复制一份模版副本,追加写入该文件。
随后再对表格进行样式的设置,参考:https://blog.csdn.net/weixin_43790276/article/details/127794041
在下面的代码中也对单元格样式进行了部分调整。
1 | from openpyxl.styles import Alignment |
三. 打包为单个EXE可执行文件
创建 file_version_info.txt
:
1 | # UTF-8 |
使用 pyinstaller,执行命令:
1 | pyinstaller --version-file=file_version_info.txt -i icon.ico --onefile main.py |
四. 总结
-
三种常见库(要处理 xls 文件,首选 xlrd&xlwt&xlutils ,处理 xlsx 则选择 pandas 或 OpenPyXL)
类型 xlrd&xlwt&xlutils pandas OpenPyXL 读取 支持 支持 支持 写入 支持 支持 支持 修改 支持 支持 支持 xls 支持 支持 不支持 xlsx 高版本支持 支持 支持 大文件 不支持 支持 支持 效率 快 快 快 功能 较弱 强大 一般 -
如果要对 xls 中的表格进行修改而不改变样式(实测,虽然样式不变,但是自动求和等带有函数的单元格会失效),最好先用 xls2xlsx 包将 xls 格式转成 xlsx,然后用 pandas 进行处理(追加写入模式)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15def xls2xlsx(temp_folder):
print("正在将xls文件转换为xlsx...")
os.makedirs(temp_folder, exist_ok=True)
# 遍历所有xls文件,转换为xlsx
xls_files = glob.glob('*.xls')
for file_path in xls_files:
file_name = os.path.splitext(os.path.basename(file_path))[0]
XLS2XLSX(file_path).to_xlsx(temp_folder + file_name + '.xlsx')
# 将当前目录下所有xlsx文件复制到临时目录中
xlsx_files = glob.glob('*.xlsx')
for file_path in xlsx_files:
file_name = os.path.splitext(os.path.basename(file_path))[0]
shutil.copy(file_path, temp_folder + file_name + '.xlsx') -
如果要修改单元格样式,请使用 openpyxl.styles 包。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 515code-实验室!
评论