# PinMAP → PinList 转换器 将 Excel 格式的 **PinMAP** 文件(方形封装引脚布局图)自动转换为 **PinList** 格式(引脚序号列表)。 ## 特性 - ✅ 支持 `.xls` 和 `.xlsx` 两种格式 - ✅ 零第三方依赖(Python 标准库) - ✅ GUI 文件选择 + 命令行双模式 - ✅ 智能结构验证(重复/间隙/空单元格检测) - ✅ 逆时针 PinMAP → 顺时针 PinList 自动转换 - ✅ 双向转换:MAP→List 与 List→MAP - ✅ **独立模板**:MAP→List 使用 `BallList-Template.xlsx`,List→MAP 使用 `BallMAP-Template.xlsx` - ✅ **模板格式提取**:从模板读取字体、边框、填充、对齐、列宽、行高并应用到输出 ## 快速开始 ```bash # GUI 模式(弹出文件选择器) python main.py # 命令行模式 python main.py input.xlsx ``` 输出文件:`input_PinList.xlsx` ## 项目结构 ``` pinmap-to-pinlist/ ├── Code/ │ ├── src/ # 源代码 │ └── docs/ # 架构文档 ├── Test/ │ ├── fixtures/ # 测试夹具(含模板文件) │ └── test_report.md # 测试报告 ├── Releases/ # 发布包 ├── BallList-Template.xlsx # MAP→List 样式模板(可放置于项目根目录) ├── BallMAP-Template.xlsx # List→MAP 样式模板(可放置于项目根目录) ├── CHANGELOG.md └── README.md ``` ## 技术栈 - Python 3.x(标准库) - openpyxl(.xlsx 读写) - 自定义 BIFF8 引擎(.xls 解析) ## 版本历史 ### v1.5.4 (2026-06-09) — Bug 修复版本 - **BUG-005**: 模板文件名修正 — `BallList-Template.xlsx` → `PinList-Template.xlsx`,`BallMAP-Template.xlsx` → `PinMAP-Template.xlsx` - **BUG-006**: 布局重设计 — Number 外侧(第 1 圈)+ Name 里侧(第 2 圈),彻底解决单元格冲突问题 - 上边:Number row 1,Name row 2(角点例外) - 左边:Number col 0,Name col 1 - 下边:Number row rows+3,Name row rows+2 - 右边:Number col cols+1,Name col cols - Pin1 保持在左上角(A3=1, B3=Pin1) - 18/18 单元测试 + 37/37 集成测试全部通过 ### v1.5.0 (2026-06-06) — 模板分离与格式提取 - MAP→List 使用 `PinList-Template.xlsx`(旧名 `BallList-Template.xlsx`) - List→MAP 使用 `PinMAP-Template.xlsx`(旧名 `BallMAP-Template.xlsx`) - 模板格式提取:字体、边框、填充、对齐、列宽、行高 ## 许可证 内部项目