|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- # 工资明细转换工具
-
- 这是一个用于批量转换Excel工资明细表的图形界面工具。
-
- ## 功能特点
-
- 1. 批量导入Excel文件并根据模板进行转换
- 2. 自定义设置每个文件的公司、银行和其他信息
- 3. 按照指定的单元格映射规则转换数据
- 4. 自动生成包含员工姓名和日期的输出文件名
- 5. 支持复制和保留原始Excel的格式和样式
-
- ## 环境要求
-
- - Python 3.7 或更高版本
- - 依赖包:pandas, openpyxl, xlrd, xlwt
-
- ## 快速开始
-
- 1. 确保已安装Python环境(3.7或更高版本)
- 2. 使用uv创建虚拟环境:
- ```bash
- uv venv
- ```
- 3. 激活虚拟环境:
- ```bash
- # Windows
- .venv\Scripts\activate
- # macOS/Linux
- source .venv/bin/activate
- ```
- 4. 安装依赖包:
- ```bash
- uv pip install -r requirements.txt
- ```
- 5. 运行程序:
- ```bash
- # 方法1: 直接运行Python脚本
- python main.py
-
- # 方法2: 使用批处理文件 (Windows)
- run.bat
- ```
-
- ## 使用方法
-
- 1. 在界面上点击"选择Excel文件"按钮选择要转换的Excel文件
- 2. 双击列表中的每个文件,设置公司信息(C2)、银行信息(B30)和其他信息(F2)
- 3. 点击"选择导出位置"按钮选择输出文件保存位置
- 4. 点击"开始转换"按钮进行批量转换
- 5. 转换完成后会显示成功转换的文件数量
-
- ## 文件命名规则
-
- 输出文件名格式为:`YYYY年M月份給料明細書-姓名.xls`
- - 年份(YYYY):从输入文件第二个Sheet页的B4单元格中提取
- - 月份(M):从输入文件第二个Sheet页的B4单元格中提取
- - 姓名:从输入文件第一个Sheet页的C3单元格中提取
-
- ## 配置指南
-
- ### 修改模板路径
- 在 `config.py` 文件中修改 `TEMPLATE_PATH` 变量。
-
- ### 修改单元格映射关系
- 在 `config.py` 文件中的 `CELL_MAPPINGS` 字典中定义映射关系:
- ```python
- {
- (源文件sheet索引, 行, 列): (目标文件sheet索引, 行, 列)
- }
- ```
-
- ### 修改公司和银行列表
- 编辑 `config.py` 文件中的 `COMPANY_OPTIONS` 和 `BANK_OPTIONS` 列表即可添加或删除选项。
-
- ## 常见问题解决
-
- ### 程序启动失败
- - 检查 Python 版本是否兼容 (3.7+)
- - 确认所有依赖已正确安装
- - 检查模板文件是否存在于指定路径
-
- ### 转换后的文件格式不正确
- - 确认模板文件格式无误
- - 检查输入文件是否符合要求的格式
- - 确认映射关系配置正确
-
- ### 无法识别日期
- 如果程序无法正确识别日期格式,可能需要在 `app.py` 的 `process_file` 方法中添加更多的日期解析逻辑。
-
- ## 项目结构
-
- ```
- excel_converter/
- ├── app.py # 主应用程序代码
- ├── config.py # 配置文件
- ├── main.py # 入口点
- ├── requirements.txt # 依赖列表
- ├── run.bat # Windows 运行脚本
- ├── README.md # 项目说明
- ├── template.xlsx # Excel模板文件
- └── test_data/ # 测试数据目录
- ```
-
- ## 维护和扩展
-
- ### 添加新功能
- 1. 尽量将配置参数放在 `config.py` 文件中
- 2. 保持用户界面简洁直观
- 3. 添加适当的错误处理和用户反馈
-
- ### 代码维护
- - 定期更新依赖包版本
- - 如果更改了核心功能,请更新文档
- - 考虑添加单元测试以确保功能正常
|