编辑 | blame | 历史 | 原始文档

功能测试报告_汇总大表版式统一_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 填值并复验;日期锚点列显示方式待业务确认。