feat: 添加Excel表头转换工具及相关文档
- 新增Excel表头转换工具的可执行文件 - 添加打包说明文档,包含一键打包和手动打包方法 - 添加README文档说明工具功能和使用方法 - 包含转换规则、安装要求和使用注意事项 - 添加requirements.txt指定依赖版本 - 包含build.spec打包配置文件
This commit is contained in:
commit
88d9df8961
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"python.languageServer": "None"
|
||||
}
|
||||
94
README.md
Normal file
94
README.md
Normal 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
56
build.spec
Normal 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,
|
||||
)
|
||||
17
conversion_log_20250928_144651.log
Normal file
17
conversion_log_20250928_144651.log
Normal 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
BIN
dist/Excel表头转换工具.exe
vendored
Normal file
Binary file not shown.
0
dist/conversion_log_20250928_153720.log
vendored
Normal file
0
dist/conversion_log_20250928_153720.log
vendored
Normal file
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@ -0,0 +1,2 @@
|
||||
openpyxl==3.1.2
|
||||
pyinstaller==5.13.2
|
||||
63
打包说明.md
Normal file
63
打包说明.md
Normal 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模式)
|
||||
BIN
老新系统表头对应关系.xlsx
Normal file
BIN
老新系统表头对应关系.xlsx
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user