安徽省住房城乡建设厅网站物流网站建设的需求分析
今天同事说手上有1000多个表,要求批量把表头改了,比如人事干部任免表改为人员信息表这样的小事,一个个的改估计要花费不少时间,看能否写个小程序什么的。
首先考虑的是这件事不是那么容易,主要是.xls是老格式,只是改表,不动格式其实挺不容易,然后开始尝试,gpt总是喜欢改.xlsx格式的,老格式的反倒没有太多支持的。
最后找到了xlwings组件,总算是可以只改一下表头,不会丢格式了,考虑到是1000多个文件,最好放在一个目录中遍历寻找,找到一个改一个然后存另一个目录中,整体代码如下:
程序中为了操作简单,直接在D盘创建文件夹D:/data/ori作为源目录
D:/data/mod作为目标目录
import os
import xlwings as xwdef 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即可