feat: 添加Excel表头转换工具及相关文档

- 新增Excel表头转换工具的可执行文件
- 添加打包说明文档,包含一键打包和手动打包方法
- 添加README文档说明工具功能和使用方法
- 包含转换规则、安装要求和使用注意事项
- 添加requirements.txt指定依赖版本
- 包含build.spec打包配置文件
This commit is contained in:
yuuko 2025-09-28 15:57:01 +08:00
commit 88d9df8961
9 changed files with 235 additions and 0 deletions

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"python.languageServer": "None"
}

94
README.md Normal file
View File

@ -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`
日志包含:
- 转换开始和结束时间
- 处理的文件列表
- 转换成功和失败的统计
- 详细的错误信息(如果有)

56
build.spec Normal file
View File

@ -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,
)

View File

@ -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 个文件失败

BIN
dist/Excel表头转换工具.exe vendored Normal file

Binary file not shown.

View File

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
openpyxl==3.1.2
pyinstaller==5.13.2

63
打包说明.md Normal file
View File

@ -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模式

Binary file not shown.