# 功能测试报告_汇总大表版式统一_2026-09-08 ## 一、功能说明 用户拍板(2026-09-08):汇总大表版式统一,四项规则—— 1) 数值保留两位小数(数值/公式格显示 0.00,同比百分比 0.00% 保留); 2) 排名列整数(格式 0); 3) 表格列宽按内容自适应(长公式文本不再把列撑爆); 4) 背景色全部统一去除(无填充)。 涉及文件: - 母版:`docs/生成汇总大表/2026年7月道路运输量汇总表.xlsx`、`2026年8月道路运输量汇总表.xlsx` - 还原源(同做归一,防生成时旧底色/旧格式“复活”):`_备份_2026年7月道路运输量汇总表_清理前_20260904.xlsx` - 程序:`ReportExportService`(新增 `applyDonorNumberFormat`:还原回填时同步 donor 数字格式) ## 二、测试环境 - 后端 8090(`start-dev.ps1` 启动),`mvn -q -DskipTests compile` exit=0 - 接口:`GET /api/report/export/summaryWorkbook?period=2026-07|2026-08&mode=month` - 校验:python3 + openpyxl,值级/样式级双读(data_only=False)diff ## 三、用例表 | # | 用例 | 操作 | 预期 | 实际 | 结论 | |---|---|---|---|---|---| | 1 | 母版去底色 | 7/8 月母版与备份统一脚本处理 | 全簿无 solid 填充 | 7 月母版 fills=0;8 月母版清除 57908 格底色后=0;备份清除 57886 格后=0 | 通过 | | 2 | 数值两位小数 | 数值+公式格按列语义归一 | 数据格显示 0.00,同比/百分比保留 | 7 月母版 38778 格归一;导出 7/8 月数据格均 0.00 / 0.00% | 通过 | | 3 | 排名整数 | 排名列表头列数据格设为 0 | 排名显示整数 | 母版与导出排名列均为 0;抽查`货运量排名`/`中口径排名`正确 | 通过 | | 4 | 列宽自适应 | 公式不计宽、数值列保底 12 | 长公式列收缩到数值宽 | `货运` I/V/X…由 42 → 12;长文本列(如 Q)保留 | 通过 | | 5 | 内容不变 | 处理前后全簿值级 diff | diff=0 | 7 月 v1→v2 diff=0;8 月暂存 vs 原母版仅 6 处空串`''→None` | 通过 | | 6 | 7 月导出端到端 | 新版式母版+备份生成 2026-07 | 无底色、格式统一、校验行底色不复活 | fills=0;出租/公交月值 0.00、同比 0.00%、`货运`r117/118 校验行 0.00 且无底色;残余仅原表遗留日期锚点列 | 通过 | | 7 | 8 月导出端到端 | 生成 2026-08 | 与 8 月母版 0 差异、无底色 | 值 diff=0;fills=0;抽查格式正确 | 通过 | | 8 | Java 编译 | `mvn -q -DskipTests compile` | exit=0 | exit=0 | 通过 | ## 四、发现的问题与处置 1. **骨架空列还原时格式丢失/底色复活**:母版 5-7 月列已清空(含同比公式),导出还原只写值不写样式,导致整数值显示 `1234`(缺 .00)、同比公式以 General 显示小数比例、`货运`r117/118 校验行把备份旧底色带回(30 格)。 处置:(a) 备份源文件同做版式统一(去底色、0.00、排名 0);(b) Java 新增 `applyDonorNumberFormat`,还原回填时同步 donor 数字格式,同比/整数值/校验行显示统一。 2. **列宽被长公式撑爆**:首版自适应把公式文本计入宽度,I/V/X…列被撑到 42。处置:宽度仅按静态内容计算、长公式不计宽、数值/公式列保底 12。 3. **列语义误判**:行 3 期次日期序列(46082…)曾使整列被判“日期列”漏归一。处置:日期格数 ≤ 数值格数时按数值列归一(日期序列所在单元格格式不动)。 4. **Excel 占用 8 月母版**:openpyxl 无法落盘;等待用户关闭窗口后覆盖,预览副本先行提供桌面。 5. **日期锚点列(原表遗留)**:2019-2026 序列号 General 期次行(如`公路总客运`r2 60 格、`中口径计算过程`A 列 192 格)非数据,未改动;如需统一为日期显示可另行拍板。 ## 五、结论 - 版式统一四项规则在 7/8 月母版与导出产物端到端生效;全簿内容零改动。 - 后续:8 月当月数据导入后按 M2/M3 填值并复验;日期锚点列显示方式待业务确认。