利用python实现对.xls文件表头的修改
今天同事说手上有1000多个表,要求批量把表头改了,比如人事干部任免表改为人员信息表这样的小事,一个个的改估计要花费不少时间,看能否写个小程序什么的。
首先考虑的是这件事不是那么容易,主要是.xls是老格式,只是改表,不动格式其实挺不容易,然后开始尝试,gpt总是喜欢改.xlsx格式的,老格式的反倒没有太多支持的。
最后找到了xlwings组件,总算是可以只改一下表头,不会丢格式了,考虑到是1000多个文件,最好放在一个目录中遍历寻找,找到一个改一个然后存另一个目录中,整体代码如下:
程序中为了操作简单,直接在D盘创建文件夹D:/data/ori作为源目录
D:/data/mod作为目标目录
import os
import xlwings as xw
def modify_excel_file(file_path, save_path, app):
"""
使用传入的 Excel 应用实例 app 打开 file_path 文件,
修改第一个工作表 A1 单元格内容为“人员信息表”,
然后另存为 save_path 文件。
"""
wb = app.books.open(file_path)
# 假设标题在第一个工作表的 A1 单元格(如果有合并单元格,则修改左上角即可)
wb.sheets[0].range('A1').value = "人员信息表"
wb.save(save_path)
wb.close()
def process_excel_files(input_dir, output_dir):
"""
搜索 input_dir 目录下所有 .xls 文件,
使用 Excel 修改后另存到 output_dir 目录中。
"""
# 如果输出目录不存在,则创建
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 启动 Excel 应用,后台运行
app = xw.App(visible=False)
try:
# 遍历目录下所有文件
for filename in os.listdir(input_dir):
if filename.lower().endswith('.xls'):
file_path = os.path.join(input_dir, filename)
save_path = os.path.join(output_dir, filename)
print(f"正在处理:{file_path}")
modify_excel_file(file_path, save_path, app)
finally:
# 退出 Excel 应用
app.quit()
if __name__ == '__main__':
input_directory = r'D:\data\ori'
output_directory = r'D:\data\mod'
process_excel_files(input_directory, output_directory)
print("处理完成!")
input("按任意键退出...")
然后得发给同事用,他们可能没有python环境,使用pyinstaller --onefile cc.py
生成cc.exe即可