# 市州月报格式差异报告 - 探测日期:2026-09-17 - 探测范围:`docs/投资/输入/客运(客运站)/7月`(10 个文件)、`docs/投资/输入/物流(物流园区)/7月`(17 个文件),另含 6 张目标表、1 个投资系统项目表 - 探测工具:`docs/投资/工具/格式探测.py`(xlrd / openpyxl 只读打开,**不改动任何源文件**) - 对应需求文档:《投资月报数据处理与多表更新需求说明(最终汇总版)》第九节确认事项 D --- ## 一、总体结论(先看这一段) 1. **好消息**:27 个市州月报中有 **20 个**直接使用省统一模板,列位与目标明细表**完全一致**,可以按列位稳定解析;差异只集中在 **7 个文件**上。 2. **风险集中**:真正的解析风险是 4 类—— - ① **数据不在第一个工作表里**(随州在 `Sheet2`;林区/潜江/襄阳必须按工作表选月份); - ② **同一工作表里混着别的市州或历史数据**(十堰物流表里前半段是「武汉」2013—2016 年的历史项目); - ③ **列位右移 1 列**(襄阳客运 `.et` 多出「建设规模」列); - ④ **「建设阶段 / 形象进度」没有分成两列**(恩施、黄石物流表合并成一列;太原汉口南山的简表没有建设阶段列)。 3. **不能按工作表名称取数**:林区 `林区物流投资月报2026.07.24.xlsx` 里 7 月数据在名为 `2026.7` 的工作表,但同一文件里 `Sheet1` 装的是 3 月、`Sheet4` 装的是 5 月;潜江 `潜江2026.07.xlsx` 里 7 月数据竟在名为 **`潜江传化2022.3`** 的工作表(表头日期 2026.07.22),其余 24 张表全是 2018—2021 年的历史数据。 → **必须用「表头区日期」判定月份,工作表名只能当参考。** 4. **客运 7 月只有 10 个市州报了文件**(缺 黄石、鄂州、随州、天门、潜江、仙桃、荆州;武汉只报了「南山、汉口站」两个项目),物流 17 个市州齐全。程序不能因为「少文件」就报错,要按市州清单对账并提示缺失。 --- ## 二、标准列位(省统一模板,20 个文件适用) | 字段 | 列 | 表头文字(各市州写法) | | --- | --- | --- | | 序号 | A | 序 号 | | 项目名称 | **B** | 项目名称及站级 / 项目名称及战级 / 项目名称 | | 投资建设单位名称 | C | 投资建设单位名称 / 项目业主 | | 建设性质 | D | 建设性质 | | 开工时间 | E | 开工时间 / 开工年 | | 竣工时间 | F | 竣工时间 / 竣工时间 / 建成时间 | | 总投资 | G | 总投资(万元) / 计划总投资(万元) | | **自开始建设累计完成投资** | **H** | 自开始建设累计完成投资(万元) | | **本年计划投资** | I | 本年计划投资(万元) | | **自年初累计完成投资** | **J** | 自年初累计完成投资(万元)/ 合计 | | **其中:本月完成投资** | **K** | 其中:本月完成投资 / 本月完成投资(万元)/ 本月 / 当月完成投资(万元) | | **项目建设阶段** | **L** | 项目建设阶段、进度情况(合并表头下左列,子表头「建设阶段」) | | **形象进度** | **M** | 形象进度(合并表头下右列,部分文件子表头缺失) | | 工可 / 初设 | S / T | 项目前期工作批复文件(各文件有 ±1 列偏移) | > 粗体 = 我们真正要取的数字段(明细表要更新的 5 列)。 ### 目标明细表的列位(与标准列位一致) | 目标表 | 工作表 | 项目名称 | 自开始建设累计 | 自年初累计 | 其中本月完成 | 建设阶段 | 形象进度 | 数据起始行 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `模板_X月客运站投资明细表.xlsx` | `明细` | B | H | J | K | L | M | 12 | | `模板_X月物流站场投资明细.xls` | ` 分项目投资完成情况` | B | H | J | K | L | M | 12 | --- ## 三、逐文件格式对照(2026 年 7 月) ### 3.1 客运(10 个文件) | 市州 | 文件 | 数据工作表 | 表头行 | 数据行 | 列位是否标准 | 差异说明 | | --- | --- | --- | --- | --- | --- | --- | | 孝感 | (孝感市道运中心)202607孝感市道路客运站场投资统计月报表.xls | Sheet1 | 4—9 | 12—14 | ✅ 标准 | — | | 恩施 | 2026湖北省道路客运站场投资统计报7月(恩施州).xls | `1` | 3—8 | 10—15 | ✅ 标准 | 表头整体上移 1 行;工作簿另有 4 张**隐藏**空表(SIMZNE / YESWAQ / BVSWOQ / SPRRQW,均 0 行×0 列,无内容) | | 林区 | 2026年7月林区道路客运站场投资统计报表(月、年报).xls | 月1 | 4—9 | 13 | ✅ 标准 | 项目仅 1 行;另有空模板表「月2」和 1 张**隐藏空表** VOOQTNP(0 行×0 列) | | 黄冈 | 2026年7月省站场投资表(黄冈) -.xlsx | 月 | 4—9 | 12—23 | ✅ 标准 | used range 到 1020 行(尾部大量空白/残留格式);B 列表头里混着「合计」二字;文件名含空格和连字符 | | 咸宁 | 2026年7月咸宁市客运站场投资统计月报表(1)省表(1).xls | 月报表 | 4—9 | 14—24 | ✅ 标准 | 尾部多 1 列(工可在 T、初设在 U);文件名带 (1)(1) 后缀;**另有 1 张隐藏工作表 `RQYQRYQS`(26 行×3 列纯文本,内容是宏病毒残留,如 "Classic.Poppy by Vic" / "Infect Workbook",非数据表)——程序只能按表头字段命中选表,绝不能遍历所有工作表** | | 武汉(南山、汉口) | 2026年7月站场固投(南山、汉口站).xlsx | Sheet1 | 3 | 6—7 | ❌ 简表 | B 名称 / C 单位 / D 性质 / **E 建设时间(开工+竣工合并)** / F 计划总投资 / G 至上年底完成投资 / H 自开始建设累计 / I 本年计划投资 / **J 合计(自年初累计)** / K 本月完成 / **L 截止目前建设进展(无「建设阶段」列)** | | 宜昌 | 湖北省宜昌市道路客运站场投资报表(月、年报)07月.xls | 客运站月报 | 4—5 | 7—13 | ✅ 标准 | 表头仅 2 行;工可在 Q、初设在 R | | 荆门 | 荆门市客运站场投资统计7月.xls.xls | 表1 | 4—9 | 11—13 | ✅ 标准 | **双扩展名 `.xls.xls`** | | 十堰 | 十堰市2026年7月固定资产月报电子版投资表格.xlsx | Sheet1 | 4—8 | 12—15 | ✅ 标准 | F 列表头写作「建成时间」;4 个项目行中有 2 行**没有序号**(竹山高速客运站、竹山客运中心站);**Sheet1 第 5 行被隐藏,但 18 列全空,不影响取数** | | 襄阳 | 襄阳市道路运输服务中心2026年6月投资 (1).et | 2026年7月 | 4—6、9 | 12—18 | ⚠️ **右移 1 列(不处理)** | **WPS `.et` 格式**(实为 OLE2/BIFF8 复合文档,`xlrd` 可直接读,**无需 Excel COM**;已实测 7 张分月表全部可读);文件名写「6月」但内容是 7 月;工作簿内有 2026年1月—2026年7月 共 7 张分月表,必须按工作表选月;**D 列多出「建设规模(站级和项目类型)」**,导致 建设性质=E、开工=F、竣工=G、总投资=H、自开始建设累计=**I**、本年计划=**J**、自年初累计=**K**、本月完成=**L**、建设阶段=**M**、形象进度=**N**;**【2026-09-17 用户口径】列位右移不做特殊处理:程序按表头文字定位列,只取本次要更新的字段** | ### 3.2 物流(17 个文件) | 市州 | 文件 | 数据工作表 | 表头行 | 数据行 | 列位是否标准 | 差异说明 | | --- | --- | --- | --- | --- | --- | --- | | 黄冈 | 202607---黄冈物流站场投资表(最终版).xls | ` 分项目投资完成情况(黄冈)` | 4、6、8、9 | 16—27 | ✅ 标准 | — | | 恩施 | 2026年7月恩施州物流(货运)项目投资明细 .xls | ` 分项目投资完成情况` | 5 | 11—16 | ⚠️ 部分 | K 表头为「本月完成投资(万元)」(无「其中:」);L/M 合并为一列「项目建设阶段、进度情况」。**【2026-09-17 用户口径】上市州其实已分列、只是表头没写;我方不更新「建设阶段」列 → 此问题关闭** | | 黄石 | 2026年7月份物流(货运)投资项目明细表(黄石市) (2).xls | Sheet1 | 3—4 | 9—18(8 个项目行) | ⚠️ 部分 | **第 10 行是隐藏行**,但它是一条真实项目行「阳新县焦山物流仓储中心」(无序号,计划总投资 7,940.69 万,自开始建设累计/自年初累计/本月完成均为 0),且**已计入第 5 行「黄石」市州合计**(计划总投资 564,991.69 / 自开始建设累计 59,500.20 / 自年初累计 34,978.15 / 本月完成 7,088.90)→ **必须取,绝不能用「隐藏行」当过滤条件**;第 20 行起是签字栏与「地区/大冶/阳新/新港园区/黄石港区」行,解析时必须排除。L 列是「完成百分比」(如 0.6912…),没有「建设阶段」列 | | 孝感 | 2026年7月份孝感物流项目投资统计表.xls | ` 分项目投资完成情况` | 5—6 | 11—18 | ✅ 标准 | M(形象进度)子表头缺失,列位仍与标准一致;第 7 行是「孝感」市州汇总行 | | 襄阳 | 2026年7月湖北省襄阳市交通物流基础设施投资统计报表 (1).xls | Sheet1 | 3—4 | 6—17 | ✅ 标准 | B 列表头是「项目名称」(无「及站级」) | | 鄂州 | 2026年7月企业月报汇总(鄂州).xls | Sheet1 | 5—10 | 13—15 | ✅ 标准 | 表头是 3 行合并结构且错位(I5「自年初累计完成投资(万元)」横跨 I:L),**解析必须按第 6/7 行的列位取值,不能按合并表头** | | 随州 | 2026年7月物流基础设施建设投资月报(随州) (1).xls | **Sheet2** | 3—4 | 5—6 | ⚠️ 部分 | **数据不在第一个工作表**(首表「月2」是空模板);**没有序号列**:A=项目名称及站级、B=空列、C=投资建设单位;K 列名「当月完成投资(万元)」 | | 天门 | 7月份物流园中心建设项目 (天门).xlsx | Sheet1 | 5—10 | 13 | ✅ 标准 | 同鄂州的多行合并错位表头 | | 武汉 | 报表—武汉七月.xls | 明细 | 5—10 | 15—20 | ✅ 标准 | — | | 十堰 | 湖北省十堰交通物流基础设施投资统计汇总表(月报)(2026年7月).xls | 分项目投资完成情况 | 5—10 | 70—76(7 个项目行) | ⚠️ **高风险** | 全表 88 行,**第 11—63 行(53 行)被设为隐藏行**,内容是「武汉」市州区块(高桥货运站、蓝焰物流基地等 2013—2016 年历史项目 + 其小计/合计);第 64 行才是市州行「十堰」,第 70—76 行是十堰的 7 个项目。Excel 里看不到这些行,**但程序读单元格读得到**,不按市州切段就会把武汉的历史项目算进十堰(原探测 38 行,加入市州分段后已修正为 7 行)。**必须按市州行切段,只取十堰段** | | 宜昌 | 湖北宜昌市物流基础设施投资统计报表(月、年报)07月.xls | 物流月报 | 4—5 | 6—18 | ✅ 标准 | 表头仅 2 行 | | 荆门 | 荆门2026年07月项目投资总报表(物流).xls | ` 分项目投资完成情况` | 3—4 | 9—17 | ⚠️ 轻微 | J 列表头写作「年初累计完成投资(万元)」(**少一个「自」字**) | | 荆州 | 荆州物流投资(2026年7月报省) .xls | 2607月分项目投资完成情况 | 5—10 | 19—29 | ✅ 标准 | 行内含「小计」行,需排除 | | 林区 | 林区物流投资月报2026.07.24.xlsx | **2026.7**(表头日期 2026.07.24) | 5—10 | 15 | ✅ 标准 | **45 张工作表:19 张可见(2024.10—2026.7 的按月表)、26 张被隐藏**(潜江传化 2018—2022 历史月表 + Sheet2/Sheet3 空表);可见表里 `Sheet1`=2026.03、`Sheet4`=2026.05,表名不可靠 → **按表头日期选表**,隐藏与否不作为判定依据 | | 潜江 | 潜江2026.07.xlsx | **潜江传化2022.3**(表头日期 2026.07.22) | 5—10 | 15 | ✅ 标准 | **27 张工作表:只有 1 张可见**,即 `潜江传化2022.3`(表头日期 2026.07.22,本期数据);其余 26 张(潜江传化 2018—2022 历史月表)**全部被隐藏**。工作表名与实际月份严重不符 → 必须按**表头日期**选表,不能靠表名或"看得见/看不见";**该表只有 1 个项目行,疑似漏报,需人工核实** | | 仙桃 | 仙桃市物流园投资统计报表(202607).xls | `1` | 4、5、6、8、9、14 | 12—13 | ✅ 标准 | H 列表头区残留日期「2026.7.24」;项目仅 2 行 | | 咸宁 | 咸宁市2026年7月份物流(货运)项目投资明细 (1).xls | ` 分项目投资完成情况` | 4—5 | 10—18 | ⚠️ 轻微 | K 列表头只有「本月」二字;**表内标题误写为「2026年6月」**(内容为 7 月);第 6 行是「咸宁」市州汇总行 | > 物流侧隐藏项:**孝感 / 恩施 / 随州 / 咸宁 / 武汉 / 荆门** 6 个文件各多出 1 张**隐藏**的「月2」空模板表(32 行×24 列)。 > 这些空模板只在"遍历全部工作表"时才会被误取;按「表头日期 + 字段命中」选表即不受影响。完整清单见 `docs\投资\输出\隐藏数据核实清单_2026-07.md`。 --- ## 四、差异清单(按风险分级) ### 高风险(会导致取错数 / 算错数,必须专门处理) | # | 市州 / 文件 | 问题 | 建议处置 | | --- | --- | --- | --- | | H1 | 十堰物流 | 第 11—63 行是**隐藏行**,内容是「武汉」历史区块(2013—2016 年项目 + 小计/合计)——**不是**同一个可见区块里混排;Excel 打开看不见,程序读单元格读得到 | 以「首 5 列里只有一个单元格是市州名、同行其余为空」的行作为**分段标志**,只取本市州段;解析后做**分段校验**(项目数、合计值与该段「小计/合计」行比对),不一致即弹窗。已实现:探测结果由 38 行修正为 7 行 | | H2 | 潜江 / 林区 | 潜江 26/27 张表、林区 26/45 张表被**隐藏**;可见表名与实际月份不符(潜江可见表名 `潜江传化2022.3`,实为 2026 年 7 月数据) | 按**表头区日期**(如 2026.07.22 / 2026.07.24)判定月份并选表;**"隐藏/可见"不作为判定依据**;找不到当期表即弹窗报「未找到 X 月数据表」 | | H3 | 襄阳客运 | `.et` 格式 + 列位整体右移 1 列 + 文件名月份与实际不符 | **`.et` 实为 OLE2/BIFF8,`xlrd` 直接读即可**(无需 COM);按**表头文字定位列**(不写死列号)后按名称取值;用工作表内日期核对月份。**【2026-09-17 用户口径】不做特殊处理,只取本次要更新的字段** | | H4 | 本项目所有源文件 | 数据区把「市州行 / 分类行(一、二、三、四)/ 小计行 / 合计行 / 空行」和项目行混排 | 统一的「项目行判定」规则:A 列为整数序号(或随州式无序号)+ B(或 A)列项目名称非空 + 名称不含「小计/合计/一、/二、/三、/四、」;同时把 市州行、小计行 收集为**校验用对照组** | | H5 | 本项目所有源文件 | 「隐藏」不等于「不是数据」(黄石物流隐藏行 R10 是真实项目行,且已计入市州合计);反之「可见」也不等于「是本期数据」(潜江/林区/林区的可见表名与实际月份不符) | **禁止把"隐藏行 / 隐藏工作表"当作过滤条件**。取数判定只用三条:① 表头日期选表;② 市州行切段;③ 项目行判定(序号/名称/数值锚点)| ### 中风险(会造成少取/漏取,但不至于取错数) | # | 市州 | 问题 | 建议处置 | | --- | --- | --- | --- | | ~~M1~~ | ~~恩施物流、黄石物流~~ | **【2026-09-17 关闭】** 用户口径:恩施、黄石其实已经分列,只是表头没写;且**我方不更新「建设阶段」列** → 不处理,问题关闭 | — | | M2 | 武汉(南山、汉口)客运 | 简表布局:无开工/竣工分列、无建设阶段列,L 列是「截止目前建设进展」 | 单独一条映射规则;建设阶段留空,形象进度取 L 列;项目名称为「汉口客运中心」「武汉南(山坡)客运枢纽站」两个,需确认是否与明细表存量项目同名 | | M3 | 鄂州、天门物流 | 3 行合并表头错位(I5「自年初累计完成投资」横跨 I:L) | 解析时固定用**第 6 行(子表头行)**取列位,忽略第 5 行的合并大表头 | | M4 | 随州物流 | 数据在 Sheet2、无序号列 | 遍历工作表找「含表头关键字段 + 有数据行」的表;项目名称列 A | | M5 | 黄冈客运、黄冈物流、孝感物流、荆州物流、仙桃物流 | 数据区含小计/合计行、尾部大量空白行、used range 虚高(黄冈客运到 1020 行) | 按项目行判定规则过滤;不要用 used range 作为行数依据 | ### 低风险(只影响表头文字,不影响取数) - 荆门物流 J 列表头少「自」字;咸宁物流 K 列表头只有「本月」;咸宁物流标题误写 6 月;十堰客运 F 列写「建成时间」;孝感物流 M 列子表头缺失;仙桃物流 H 列表头残留日期;文件名带 `(1)`、`(2)`、空格、连字符(黄冈客运 ` -.xlsx`)、双扩展名(荆门客运 `.xls.xls`)。 - 开工/竣工时间写法不统一:`2024`、`2024.0`、`2023.01`、`2023.10`;序号写法不统一:`1`、`1.0`、`"1"`。 - 文件格式三种:`.xls`(最多)、`.xlsx`、`.et`(襄阳客运)。 --- ## 五、给程序实现的建议(供拍板) 1. **列位不要写死**:按「字段名 → 列」的方式,在表头区(前 12 行 × 前 30 列)做**关键字匹配**定位列,再回退到标准列位。本次探测已确认关键字匹配可覆盖全部 27 个文件。 2. **月份不要靠文件名/工作表名**:优先用表头区日期格判定;判不出来再用文件名中的 6 位 `YYYYMM`;再判不出来才用「含数据的最后一张表」并且**必须弹窗确认**。 3. **分段解析**:把工作表按「市州行 / 分类行 / 小计行 / 合计行」切成段,只取目标市州段的项目行;用「小计/合计」行与项目行求和做**内部一致性校验**(不一致 → 弹窗 + 记日志)。 4. **市州清单对账**:程序内置 17 市州清单,对缺失文件、缺失数据表逐个提示(本次客运缺 7 个市州文件)。 5. **读文件**:`.xls` 与 `.et` 都用 **xlrd** 直读(实测 `.et` 是 WPS 存成的 OLE2/BIFF8 复合文档,magic 为 `D0CF11E0`,xlrd 可正常打开并列举工作表);`.xlsx` 用 openpyxl。**不必为了读 `.et` 专门起 Excel COM**(COM 只在必须取「公式计算结果」或读 `.xls` 样式时才用)。 6. **不要用「隐藏行 / 隐藏工作表」做过滤**:黄石物流的隐藏行 R10 是真实项目行(阳新县焦山物流仓储中心,已计入黄石市州合计);潜江/林区的可见表名反而是历史表名。判定只用「表头日期选表 + 市州行切段 + 项目行判定」三条。 --- ## 六、待确认问题(需要您拍板) 1. ~~**恩施物流、黄石物流**的「建设阶段 / 形象进度」合并列……~~ **【2026-09-17 已关闭】** 用户:恩施、黄石其实已分列(只是表头没写),且我方不更新「建设阶段」列。 2. **武汉(南山、汉口)客运简表**的「建设阶段」没有对应列,是否同样留空? 3. **潜江物流 7 月只有 1 个项目行**(潜江传化公路港),是否漏报?(该文件里 2026 年数据被写进了名为「潜江传化2022.3」的工作表) 4. **汇总表**(`2026年全省预安排计划进度情况汇总`)里没有「其中:本月完成投资」这一列(现有列为 I=自开始建设累计、W=1-7月累计完成投资、X=实际进度),需求文档里写的 4 项指标与模板列对不上,第 ③ 项「本月完成投资」应落在哪一列? 5. **《亿元投资项目》**(`规上项目表`)里没有「自开始建设累计完成投资」和「自年初累计完成投资」列(现有列为 截至2025年年底实际完成投资 + 2026年各月实际/计划完成投资),需求文档里的「更新 3 项」与模板列对不上,请确认映射。 6. **客运缺 7 个市州文件**(黄石、鄂州、随州、天门、潜江、仙桃、荆州):是本期确实没有项目,还是漏报?程序遇到缺失应「跳过 + 提示」还是「报错中止」? --- (本报告由 `docs/投资/工具/格式探测.py` 对 2026 年 7 月源文件实测生成,结论可直接用同一脚本对其他月份复跑。) --- ## 七、更正记录(2026-09-17) 本报告初版(2026-09-17 上午)对「十堰 / 潜江 / 林区 / 黄石 / 恩施」几处的措辞不准确,用户打开文件核对后反馈"没有这个情况",复核后更正如下(**只改措辞与口径,数据结论不变**): | # | 初版写法(不准确) | 更正后(准确) | | --- | --- | --- | | 1 | 十堰物流"同一工作表里混着两个市州区块" | 十堰物流第 **11—63 行是隐藏行**,内容是武汉历史区块;第 64 行才是市州行「十堰」。用户在 Excel 里看不见,是正常的 | | 2 | 潜江 / 林区"工作表名与实际月份不符" | 潜江 26/27 张表、林区 26/45 张表被**隐藏**;可见表只剩 1 张(潜江)/19 张(林区)。程序按表头日期选表,与表名无关 | | 3 | 襄阳客运"整表右移 1 列" | 按用户口径**不做处理**;程序按表头文字定位列,只取要更新的字段 | | 4 | 恩施 / 黄石物流"建设阶段与形象进度未分列" | 用户:已分列,只是表头没写;且**不更新建设阶段列** → 问题关闭 | | 5 | 黄石物流"8 个项目行中有 1 行没有序号(金山口物流园项目)" | 该行是**隐藏行** R10,正确名称为**阳新县焦山物流仓储中心**,且**必须取**(已计入黄石市州合计) | | 6 | 格式探测脚本未做市州分段 | 已加入**市州分段**(`CITIES` + `city_segments()`):十堰物流由 38 个项目行修正为 **7 行**;复跑确认其余 26 个文件结果不变 | | 7 | 把 `.et` 当成「xlrd/openpyxl 都读不了,必须 Excel COM」 | 实测 `.et` 头部为 `D0CF11E0`(OLE2 复合文档 / BIFF8),**`xlrd` 可以直接读**:襄阳客运 `.et` 的 7 张分月表(2026年1月—2026年7月)全部可正常读取;隐藏项探测已将 27/27 个源文件全覆盖 | 另外,隐藏项完整清单(哪个文件、哪张表、哪几行、隐藏内容是什么、怎么自己取消隐藏验证)见 `docs\投资\输出\隐藏数据核实清单_2026-07.md`。 (本报告由 `docs/投资/工具/格式探测.py` 对 2026 年 7 月源文件实测生成,结论可直接用同一脚本对其他月份复跑。)