commit 88d9df8961bd519872b11ffb2ca29f654c466040 Author: yuuko <2576724631@qq.com> Date: Sun Sep 28 15:57:01 2025 +0800 feat: 添加Excel表头转换工具及相关文档 - 新增Excel表头转换工具的可执行文件 - 添加打包说明文档,包含一键打包和手动打包方法 - 添加README文档说明工具功能和使用方法 - 包含转换规则、安装要求和使用注意事项 - 添加requirements.txt指定依赖版本 - 包含build.spec打包配置文件 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ff5300e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.languageServer": "None" +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d15d603 --- /dev/null +++ b/README.md @@ -0,0 +1,94 @@ +# Excel表头转换工具 + +这是一个用于批量转换Excel文件表头的图形界面工具,可以根据预定义的规则将老系统的表头转换为新系统的表头格式。 + +## 功能特点 + +- 图形化用户界面,操作简单 +- 批量处理指定目录下的所有Excel文件 +- 保持原有目录结构输出 +- 详细的转换日志记录 +- 错误处理和进度显示 + +## 转换规则 + +### 1. 表头重命名(A转B) +- 件号 → 部门件号 +- 题名 → 文件题名 +- 责任者 → 责任者 +- 文件编号 → 文号 +- 形成日期 → 文件形成日期 +- 页数 → 页数 +- 关键词 → 关键词 +- 内容描述 → 内容描述 +- 附注 → 附注 +- 档号 → 档号 + +### 2. 删除列 +以下列将被删除: +- 表格名称 +- 性别 +- 出生年月 +- 文件名称 +- 图片文件名 +- PDF名称 + +### 3. 新增空值列 +以下列将被添加并填入空值: +- 流水号、附件数量、张页号、顺序号、涉及人名、所属卷宗 +- 保管期限、密级、年度、案卷分类、移交部门、存址号 +- 部门归档时间、相关案卷、所属项目、单位名称、状态、备注 +- 类型、文件类型、次要责任者、文种、物理存址号、主送者 +- 附件名称、交替题名、组卷字段、全宗号、案卷号 + +### 4. 固定值列 +以下列将被添加并填入固定值: +- 著录人:zhongyuan +- 档案状态:已入库 +- 语种:中文 +- 载体类型:纸质 + +## 安装要求 + +确保已安装Python 3.6+,然后安装依赖包: + +```bash +pip install -r requirements.txt +``` + +## 使用方法 + +1. 运行程序: + ```bash + python excel_converter.py + ``` + +2. 在图形界面中: + - 选择输入路径(包含要转换的Excel文件的根目录) + - 选择输出路径(转换后文件的保存位置) + - 点击"开始转换"按钮 + +3. 程序将: + - 递归扫描输入路径下的所有子文件夹 + - 找到所有.xlsx文件 + - 按照转换规则处理每个文件 + - 保持原有目录结构输出到指定位置 + - 显示转换进度和详细日志 + +## 注意事项 + +- 程序只处理.xlsx格式的文件 +- 假设每个Excel文件只有一个工作表 +- 第一行为表头,数据从第二行开始 +- 转换过程中会生成详细的日志文件 +- 如果遇到错误,会在界面和日志中显示详细信息 + +## 日志文件 + +程序运行时会自动生成日志文件,文件名格式为:`conversion_log_YYYYMMDD_HHMMSS.log` + +日志包含: +- 转换开始和结束时间 +- 处理的文件列表 +- 转换成功和失败的统计 +- 详细的错误信息(如果有) \ No newline at end of file diff --git a/build.spec b/build.spec new file mode 100644 index 0000000..6da0ffb --- /dev/null +++ b/build.spec @@ -0,0 +1,56 @@ +# -*- mode: python ; coding: utf-8 -*- + +block_cipher = None + +a = Analysis( + ['excel_converter.py'], + pathex=[], + binaries=[], + datas=[], + hiddenimports=[ + 'openpyxl', + 'openpyxl.workbook', + 'openpyxl.worksheet', + 'openpyxl.cell', + 'openpyxl.styles', + 'openpyxl.utils', + 'tkinter', + 'tkinter.ttk', + 'tkinter.filedialog', + 'tkinter.messagebox', + 'tkinter.scrolledtext' + ], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False, +) + +pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='Excel表头转换工具', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=False, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + icon=None, +) \ No newline at end of file diff --git a/conversion_log_20250928_144651.log b/conversion_log_20250928_144651.log new file mode 100644 index 0000000..783230f --- /dev/null +++ b/conversion_log_20250928_144651.log @@ -0,0 +1,17 @@ +2025-09-28 14:47:16,784 - INFO - 开始转换过程 +2025-09-28 14:47:16,802 - INFO - 输入路径: C:/Users/25767/Documents/vscodeDome/表格替换/test +2025-09-28 14:47:16,806 - INFO - 输出路径: D:/Windos0/desktop/1 +2025-09-28 14:47:16,817 - INFO - 找到 1 个Excel文件 +2025-09-28 14:47:16,910 - INFO - 原表头: ['件号', '题名', '责任者', '表格名称', '文件编号', '形成日期', '页数', '关键词', '性别', '出生年月', '内容描述', '附注', '文件名称', '档号', '图片文件名', 'PDF名称'] +2025-09-28 14:47:16,994 - INFO - 新表头: ['部门件号', '文件题名', '责任者', '文号', '文件形成日期', '页数', '关键词', '内容描述', '附注', '档号', '流水号', '附件数量', '张页号', '顺序号', '涉及人名', '所属卷宗', '保管期限', '密级', '年度', '案卷分类', '移交部门', '存址号', '部门归档时间', '相关案卷', '所属项目', '单位名称', '状态', '备注', '类型', '文件类型', '著录人', '档案状态', '次要责任者', '文种', '语种', '物理存址号', '主送者', '附件名称', '交替题名', '载体类型', '组卷字段', '全宗号', '案卷号'] +2025-09-28 14:47:17,020 - INFO - 转换文件 C:/Users/25767/Documents/vscodeDome/表格替换/test\0001\test.xlsx 时出错: [Errno 13] Permission denied: 'D:/Windos0/desktop/1\\0001\\test.xlsx' +2025-09-28 14:47:17,024 - INFO - 错误: 转换文件 C:/Users/25767/Documents/vscodeDome/表格替换/test\0001\test.xlsx 时出错: [Errno 13] Permission denied: 'D:/Windos0/desktop/1\\0001\\test.xlsx' +2025-09-28 14:47:17,030 - INFO - 转换完成! 成功转换 0 个文件, 1 个文件失败 +2025-09-28 14:47:20,941 - INFO - 开始转换过程 +2025-09-28 14:47:20,943 - INFO - 输入路径: C:/Users/25767/Documents/vscodeDome/表格替换/test +2025-09-28 14:47:20,945 - INFO - 输出路径: D:/Windos0/desktop/1 +2025-09-28 14:47:20,948 - INFO - 找到 1 个Excel文件 +2025-09-28 14:47:20,990 - INFO - 原表头: ['件号', '题名', '责任者', '表格名称', '文件编号', '形成日期', '页数', '关键词', '性别', '出生年月', '内容描述', '附注', '文件名称', '档号', '图片文件名', 'PDF名称'] +2025-09-28 14:47:21,043 - INFO - 新表头: ['部门件号', '文件题名', '责任者', '文号', '文件形成日期', '页数', '关键词', '内容描述', '附注', '档号', '流水号', '附件数量', '张页号', '顺序号', '涉及人名', '所属卷宗', '保管期限', '密级', '年度', '案卷分类', '移交部门', '存址号', '部门归档时间', '相关案卷', '所属项目', '单位名称', '状态', '备注', '类型', '文件类型', '著录人', '档案状态', '次要责任者', '文种', '语种', '物理存址号', '主送者', '附件名称', '交替题名', '载体类型', '组卷字段', '全宗号', '案卷号'] +2025-09-28 14:47:21,125 - INFO - 成功转换: test.xlsx +2025-09-28 14:47:21,150 - INFO - 转换完成! 成功转换 1 个文件, 0 个文件失败 diff --git a/dist/Excel表头转换工具.exe b/dist/Excel表头转换工具.exe new file mode 100644 index 0000000..9e0d2e2 Binary files /dev/null and b/dist/Excel表头转换工具.exe differ diff --git a/dist/conversion_log_20250928_153720.log b/dist/conversion_log_20250928_153720.log new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..de8d567 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +openpyxl==3.1.2 +pyinstaller==5.13.2 \ No newline at end of file diff --git a/打包说明.md b/打包说明.md new file mode 100644 index 0000000..cecd7f0 --- /dev/null +++ b/打包说明.md @@ -0,0 +1,63 @@ +# Excel表头转换工具 - 打包说明 + +## 🚀 一键打包 + +### 方法1:使用批处理文件(推荐) +1. 双击运行 `build.bat` +2. 等待打包完成 +3. 在 `dist` 文件夹中找到 `Excel表头转换工具.exe` + +### 方法2:手动打包 +```bash +# 1. 安装依赖 +pip install -r requirements.txt + +# 2. 打包程序 +pyinstaller build.spec +``` + +## 📦 打包特性 + +### ✅ 兼容性优化 +- **支持Win7及以上系统** +- **无需安装Python环境** +- **自动包含所有依赖库** +- **单文件可执行程序** + +### 🔧 技术优化 +- 使用 `data_only=True` 正确处理Excel公式 +- 添加 `sys._MEIPASS` 支持打包后的资源路径 +- 优化错误处理,避免打包后崩溃 +- 移除不必要的依赖(tkinter是Python内置库) + +### 📁 输出结构 +``` +dist/ +└── Excel表头转换工具.exe # 可执行文件(约15-20MB) +``` + +## 🎯 使用说明 + +### 打包后的程序特点: +1. **独立运行**:无需安装Python或任何依赖 +2. **兼容性强**:支持Windows 7/8/10/11 +3. **体积优化**:使用UPX压缩,减小文件大小 +4. **错误处理**:完善的异常处理,避免程序崩溃 + +### 分发建议: +- 可以直接复制 `.exe` 文件到目标电脑 +- 建议同时提供使用说明文档 +- 首次运行可能被杀毒软件拦截,添加信任即可 + +## 🛠️ 故障排除 + +### 常见问题: +1. **打包失败**:确保已安装所有依赖 `pip install -r requirements.txt` +2. **运行报错**:检查目标系统是否为Windows 7及以上 +3. **杀毒软件拦截**:将程序添加到杀毒软件白名单 + +### 技术细节: +- 使用PyInstaller 5.13.2版本(兼容性最佳) +- 启用UPX压缩减小文件体积 +- 隐式导入所有必要的openpyxl模块 +- 禁用控制台窗口(GUI模式) \ No newline at end of file diff --git a/老新系统表头对应关系.xlsx b/老新系统表头对应关系.xlsx new file mode 100644 index 0000000..2273909 Binary files /dev/null and b/老新系统表头对应关系.xlsx differ