docs(投资):订正 .et 可读性判断(xlrd 可直读)+ 新增开工前《待确认清单》

一、核实工作区 4 个「已修改未提交」的源文件/模板
与 HEAD 版本逐单元格比对,4 个文件数据均 0 处差异,字节差异仅来自
Excel/WPS 重新保存的格式重写 —— 没有数据风险,是否还原等用户拍板。

二、订正一个错误判断:.et 其实能只读读
原判断「.et 用 xlrd/openpyxl 都读不了,必须 Excel COM」是错的:
实测文件头 D0CF11E0A1B11AE1 = OLE2 复合文档 / BIFF8,xlrd 可直接打开。
襄阳客运 .et 的 7 张分月表(2026年1月—2026年7月 )全部读出,
7 张全部可见、无隐藏行/列。隐藏项探测覆盖面由此扩到 27/27 个源文件。

三、文档与工具同步
- 格式探测.py / 隐藏项探测.py:.et 走 xlrd,注释订正
- 市州月报格式差异报告:襄阳 .et 行、H3、第五节第 5 条、更正记录新增第 7 条
- 隐藏数据核实清单:覆盖范围 27/27,3.3/3.4 节改写
- 字段映射表:Sheet1 A17、Sheet3 O13/P13、Sheet6 D6/E6

四、新增《待确认清单_2026-09-17.md》(勾选版,13 条)
阻塞 Step1 的 5 条 + Step2/3 的 4 条 + 收尾 4 条,每条给现状/选项/建议。
功能测试报告新增 TC16–TC18(全部通过),工作日结补记第六节。
9个文件已修改
1个文件已添加
285 ■■■■■ 已修改文件
docs/功能测试报告/功能测试报告_投资月报格式探测与字段映射表_2026-09-17.md 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/工作日结/工作日结_2026-09-17.md 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/投资/工具/格式探测.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/投资/工具/隐藏项探测.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/投资/输出/字段映射表_草案_2026-07.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
docs/投资/输出/市州月报格式差异报告_2026-07.md 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/投资/输出/待确认清单_2026-09-17.md 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/投资/输出/隐藏数据核实清单_2026-07.md 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/投资/输出/隐藏项探测_2026-07.md 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/投资/输出/隐藏项探测_2026-07.txt 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ͷ×ÊÔ±¨¸ñʽ̽²âÓë×Ö¶ÎÓ³Éä±í_2026-09-17.md
@@ -89,3 +89,21 @@
- ä»æœªé—­çŽ¯ï¼š**映射表 xlsx çš„同步订正待补**(文件当时被 WPS å ç”¨ï¼Œå­˜åœ¨ `~$` é”æ–‡ä»¶ï¼›è®¢æ­£è„šæœ¬ `_qa_out\patch_map.py` å·²å¤‡å¥½ï¼Œå…³é—­æ–‡ä»¶åŽé‡è·‘即可)。
- æœ¬è½®ä»**未改动任何业务程序代码**、**未改动任何源文件**。
---
## ä¸ƒã€è¡¥å……(2026-09-17 å‚æ™š Â· `.et` å¯è¯»æ€§ + å·¥ä½œåŒºæ–‡ä»¶æ ¸å¯¹ï¼‰
| ç¼–号 | ç”¨ä¾‹ï¼ˆè¾“入) | é¢„期 | å®žé™… | ç»“论 |
| --- | --- | --- | --- | --- |
| TC16 | `.et` åˆ°åº•能不能只读读?(原判断:xlrd/openpyxl éƒ½è¯»ä¸äº†ï¼Œå¿…é¡» Excel COM) | ç»“论可复现 | å®žæµ‹æ–‡ä»¶å¤´ = `D0CF11E0A1B11AE1`(**OLE2 å¤åˆæ–‡æ¡£ / BIFF8**,即 WPS å­˜æˆçš„ BIFF8),**`xlrd` èƒ½æ­£å¸¸æ‰“å¼€**:读出 7 å¼ åˆ†æœˆè¡¨ `2026å¹´1月`—`2026å¹´7月 `,尺寸 24×20 / 26×18。→ **原判断是错的**,已订正 | âœ… é€šè¿‡ï¼ˆè®¢æ­£ï¼‰ |
| TC17 | åŠ ä¸Š `.et` åŽï¼Œéšè—é¡¹æŽ¢æµ‹çš„覆盖面 | 27/27 ä¸ªæºæ–‡ä»¶å…¨è¦†ç›– | `.et` ç»“果:7 å¼ è¡¨**全部可见**、无隐藏行/列;隐藏项探测由 26 ä¸ªæ–‡ä»¶æ‰©åˆ° **27/27** | âœ… é€šè¿‡ |
| TC18 | å·¥ä½œåŒºé‡Œ 4 ä¸ªæ˜¾ç¤ºã€Œå·²ä¿®æ”¹æœªæäº¤ã€çš„æ–‡ä»¶ï¼Œæ˜¯å¦æœ‰æ•°æ®è¢«æ”¹åЍ | é€å•元格比对旧(HEAD)与新 | **4 ä¸ªæ–‡ä»¶å…¨éƒ¨ 0 å¤„差异**:<br>· `2026å¹´7月站场固投(南山、汉口站).xlsx` 10×15 â†’ 10×15,差异 0<br>· `襄阳市…投资 (1).et` 7 å¼ è¡¨ é€å¼ å·®å¼‚ 0<br>· `模板_全省预安排计划进度情况汇总.xls` 272×28 â†’ 272×28,差异 0<br>· `模板_经济强县投资统计报表.xls` 45×17 â†’ 45×17,差异 0<br>字节差异仅来自 Excel/WPS é‡æ–°ä¿å­˜çš„æ ¼å¼é‡å†™ | âœ… é€šè¿‡ï¼ˆæ•°æ®æ— é£Žé™©ï¼‰ |
### 7.1 æœ¬è½®äº§å‡ºå¢žé‡
- ä¿®æ”¹ `docs\投资\工具\格式探测.py`(订正 `.et` æ‘˜è¯»è¯´æ˜Žï¼‰ã€`docs\投资\工具\隐藏项探测.py`(`.et` èµ° xlrd)
- ä¿®æ”¹ `docs\投资\输出\市州月报格式差异报告_2026-07.md`(襄阳 `.et` è®¢æ­£ + æ›´æ­£è®°å½•第 7 æ¡ï¼‰
- ä¿®æ”¹ `docs\投资\输出\隐藏数据核实清单_2026-07.md`(覆盖 27/27、3.4 èŠ‚æ”¹å†™ï¼‰
- ä¿®æ”¹ `docs\投资\输出\字段映射表_草案_2026-07.xlsx`(Sheet1 A17、Sheet3 O13/P13、Sheet6 D6/E6)
- æ–°å¢ž `docs\投资\输出\待确认清单_2026-09-17.md`(勾选版,13 æ¡ï¼‰
docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-17.md
@@ -89,3 +89,35 @@
- **映射表 xlsx æœªå†™å…¥**:`字段映射表_草案_2026-07.xlsx` è¢« WPS æ‰“开占用(目录下存在 `~$字段映射表_草案_2026-07.xlsx` é”æ–‡ä»¶ï¼‰ï¼Œ`PermissionError`。订正脚本 `_qa_out\patch_map.py` å·²å¤‡å¥½ï¼Œ**关闭该文件后重跑即可**(会补上 Sheet3 çš„「隐藏项核实」列、修正十堰/林区/潜江/黄石等行,Sheet6 æ›´æ–°åå °ã€æ½œæ±Ÿæž—区、襄阳、恩施黄石,并新增「隐藏行不能当过滤条件」一条)。
- å…¬å¸ gitea ä»ä¸é€šã€‚
---
## å…­ã€å‚æ™šè¿½åŠ ï¼ˆ`.et` å¯è¯»æ€§è®¢æ­£ + å¾…确认清单)
### 6.1 æ ¸å®žã€Œä»“库里 4 ä¸ªè¢«æ”¹åŠ¨çš„æ–‡ä»¶ã€
用户确认要我先核实。逐个把 HEAD ç‰ˆæœ¬ä¸Žå·¥ä½œåŒºç‰ˆæœ¬åš**逐单元格比对**:
| æ–‡ä»¶ | ç»“æžœ |
| --- | --- |
| `输入\客运(客运站)\7月\2026å¹´7月站场固投(南山、汉口站).xlsx` | æ•°æ® **0 å¤„差异**(10×15 å…¨åŒï¼‰ |
| `输入\客运(客运站)\7月\襄阳市道路运输服务中心2026å¹´6月投资 (1).et` | 7 å¼ åˆ†æœˆè¡¨**逐张 0 å¤„差异** |
| `模板\模板_全省预安排计划进度情况汇总.xls` | æ•°æ® **0 å¤„差异**(272×28 å…¨åŒï¼‰ |
| `模板\模板_经济强县投资统计报表.xls` | æ•°æ® **0 å¤„差异**(45×17 å…¨åŒï¼‰ |
→ å­—节差异只是 Excel/WPS é‡æ–°ä¿å­˜é€ æˆçš„æ ¼å¼é‡å†™ï¼Œ**没有数据风险**;是否还原等用户拍板。
### 6.2 è®¢æ­£ä¸€ä¸ªé”™è¯¯åˆ¤æ–­ï¼š`.et` å…¶å®žèƒ½è¯»
之前把 `.et` å½“成「xlrd/openpyxl éƒ½è¯»ä¸äº†ï¼Œå¿…é¡» Excel COM」。实测文件头是 `D0CF11E0A1B11AE1`——**OLE2 å¤åˆæ–‡æ¡£ / BIFF8**,`xlrd` ç›´æŽ¥å°±èƒ½è¯»ï¼šè¥„阳客运 `.et` çš„ 7 å¼ åˆ†æœˆè¡¨å…¨éƒ¨è¯»å‡ºï¼ˆ`2026å¹´1月`—`2026å¹´7月 `)。已修两个工具与差异报告/核实清单/映射表,隐藏项探测覆盖由 26 ä¸ªæ–‡ä»¶æ‰©åˆ° **27/27**。
### 6.3 äº§å‡ºã€Šå¾…确认清单_2026-09-17.md》
按用户要求把开工前必须定的口径做成「勾选版」确认表(13 æ¡ï¼‰ï¼Œæ¯æ¡éƒ½ç»™çŽ°çŠ¶ + é€‰é¡¹ + æˆ‘的建议:
- **阻塞 Step1 çš„ 5 æ¡**:明细表更新哪几列、客运缺 7 å¸‚州怎么处理、校验的上月底数从哪来、潜江只有 1 ä¸ªé¡¹ç›®è¡Œã€æ­¦æ±‰ç®€è¡¨æ— å»ºè®¾é˜¶æ®µåˆ—ï¼›
- Step2/3 çš„ 4 æ¡ï¼šæ±‡æ€»è¡¨æ›´æ–°å“ªäº›åˆ—(含 `W=1-7月累计` è¡¨å¤´è¦ä¸è¦è·Ÿç€æœˆä»½æ”¹ï¼‰ã€äº¿å…ƒæŠ•资项目「3 é¡¹ã€æ˜¯å“ªä¸‰é¡¹ã€1 æœˆåŸºæ•°å–哪列、编号 3/4 æ˜¯å¦åŒä¸€ä»½æ–‡ä»¶ï¼›
- æ”¶å°¾ 4 æ¡ï¼šè¾“出目录/命名/备份、4 ä¸ªè¢«æ”¹æ–‡ä»¶æ˜¯å¦è¿˜åŽŸã€`docs\投资\` æœªæäº¤æ”¹åŠ¨æ˜¯å¦æäº¤ã€"每月是否还要做模板"(用户说要请教同事,暂缓)。
### 6.4 å¾…办
- ç­‰ç”¨æˆ·æŠŠç¡®è®¤è¡¨å‹¾å®Œ â†’ å›žå¡«æ˜ å°„表 Sheet6 â†’ ç«‹å³è½åœ° **Step1**。
docs/Ͷ×Ê/¹¤¾ß/¸ñʽ̽²â.py
@@ -107,7 +107,10 @@
def open_sheets(path):
    """返回 [(sheet_name, nrows, ncols, cell_fn), ...];.et è¯·æ”¹ç”¨ Excel COM。"""
    """返回 [(sheet_name, nrows, ncols, cell_fn), ...]。
    æ³¨æ„ï¼š`.et`(WPS)实为 OLE2/BIFF8 å¤åˆæ–‡æ¡£ï¼Œxlrd å¯ç›´æŽ¥è¯»ï¼Œä¸å¿…èµ° Excel COM。
    """
    with open(path, 'rb') as fh:
        magic = fh.read(4)
    if magic[:4] == b'PK\x03\x04':
docs/Ͷ×Ê/¹¤¾ß/Òþ²ØÏî̽²â.py
@@ -121,12 +121,9 @@
            ext = os.path.splitext(fn)[1].lower()
            L.append('### %s' % fn)
            L.append('')
            if ext == '.et':
                L.append('- æ ¼å¼ï¼šWPS `.et`(xlrd/openpyxl éƒ½è¯»ä¸äº†ï¼Œéœ€ Excel COM / WPS æ‰“开)')
                L.append('')
                continue
            try:
                info = scan_xls(fp) if ext == '.xls' else scan_xlsx(fp)
                # æ³¨æ„ï¼š.et(WPS)实为 OLE2/BIFF8 å¤åˆæ–‡æ¡£ï¼Œxlrd å¯ä»¥ç›´æŽ¥è¯»ï¼›åªæœ‰ .xlsx èµ° openpyxl
                info = scan_xlsx(fp) if ext == '.xlsx' else scan_xls(fp)
            except Exception as e:
                L.append('- è¯»å–失败:%s' % e)
                L.append('')
docs/Ͷ×Ê/Êä³ö/×Ö¶ÎÓ³Éä±í_²Ý°¸_2026-07.xlsx
Binary files differ
docs/Ͷ×Ê/Êä³ö/ÊÐÖÝÔ±¨¸ñʽ²îÒ챨¸æ_2026-07.md
@@ -66,7 +66,7 @@
| å®œæ˜Œ | æ¹–北省宜昌市道路客运站场投资报表(月、年报)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` æ ¼å¼**;文件名写「6月」但内容是 7 æœˆï¼›å·¥ä½œç°¿å†…有 2026å¹´1月—2026å¹´7月 å…± 7 å¼ åˆ†æœˆè¡¨ï¼Œå¿…须按工作表选月;**D åˆ—多出「建设规模(站级和项目类型)」**,导致 å»ºè®¾æ€§è´¨=E、开工=F、竣工=G、总投资=H、自开始建设累计=**I**、本年计划=**J**、自年初累计=**K**、本月完成=**L**、建设阶段=**M**、形象进度=**N**;**【2026-09-17 ç”¨æˆ·å£å¾„】列位右移不做特殊处理:程序按表头文字定位列,只取本次要更新的字段** |
| è¥„阳 | è¥„阳市道路运输服务中心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 ä¸ªæ–‡ä»¶ï¼‰
@@ -103,7 +103,7 @@
| --- | --- | --- | --- |
| 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 åˆ— + æ–‡ä»¶åæœˆä»½ä¸Žå®žé™…不符 | ç”¨ Excel COM æ‰“å¼€ .et;按**表头文字定位列**(不写死列号)后按名称取值;用工作表内日期核对月份。**【2026-09-17 ç”¨æˆ·å£å¾„】不做特殊处理,只取本次要更新的字段** |
| H3 | è¥„阳客运 | `.et` æ ¼å¼ + åˆ—位整体右移 1 åˆ— + æ–‡ä»¶åæœˆä»½ä¸Žå®žé™…不符 | **`.et` å®žä¸º OLE2/BIFF8,`xlrd` ç›´æŽ¥è¯»å³å¯**(无需 COM);按**表头文字定位列**(不写死列号)后按名称取值;用工作表内日期核对月份。**【2026-09-17 ç”¨æˆ·å£å¾„】不做特殊处理,只取本次要更新的字段** |
| H4 | æœ¬é¡¹ç›®æ‰€æœ‰æºæ–‡ä»¶ | æ•°æ®åŒºæŠŠã€Œå¸‚州行 / åˆ†ç±»è¡Œï¼ˆä¸€ã€äºŒã€ä¸‰ã€å››ï¼‰/ å°è®¡è¡Œ / åˆè®¡è¡Œ / ç©ºè¡Œã€å’Œé¡¹ç›®è¡Œæ··æŽ’ | ç»Ÿä¸€çš„「项目行判定」规则:A åˆ—为整数序号(或随州式无序号)+ B(或 A)列项目名称非空 + åç§°ä¸å«ã€Œå°è®¡/合计/一、/二、/三、/四、」;同时把 å¸‚州行、小计行 æ”¶é›†ä¸º**校验用对照组** |
| H5 | æœ¬é¡¹ç›®æ‰€æœ‰æºæ–‡ä»¶ | ã€Œéšè—ã€ä¸ç­‰äºŽã€Œä¸æ˜¯æ•°æ®ã€ï¼ˆé»„石物流隐藏行 R10 æ˜¯çœŸå®žé¡¹ç›®è¡Œï¼Œä¸”已计入市州合计);反之「可见」也不等于「是本期数据」(潜江/林区/林区的可见表名与实际月份不符) | **禁止把"隐藏行 / éšè—å·¥ä½œè¡¨"当作过滤条件**。取数判定只用三条:① è¡¨å¤´æ—¥æœŸé€‰è¡¨ï¼›â‘¡ å¸‚州行切段;③ é¡¹ç›®è¡Œåˆ¤å®šï¼ˆåºå·/名称/数值锚点)|
@@ -132,7 +132,7 @@
2. **月份不要靠文件名/工作表名**:优先用表头区日期格判定;判不出来再用文件名中的 6 ä½ `YYYYMM`;再判不出来才用「含数据的最后一张表」并且**必须弹窗确认**。
3. **分段解析**:把工作表按「市州行 / åˆ†ç±»è¡Œ / å°è®¡è¡Œ / åˆè®¡è¡Œã€åˆ‡æˆæ®µï¼Œåªå–目标市州段的项目行;用「小计/合计」行与项目行求和做**内部一致性校验**(不一致 â†’ å¼¹çª— + è®°æ—¥å¿—)。
4. **市州清单对账**:程序内置 17 å¸‚州清单,对缺失文件、缺失数据表逐个提示(本次客运缺 7 ä¸ªå¸‚州文件)。
5. **读文件优先 Excel COM**(`.et` åªèƒ½ COM/WPS è¯»ï¼›`.xls` ç”¨ COM ä¹Ÿèƒ½æ‹¿åˆ°å…¬å¼ç»“果),xlrd/openpyxl ä»…用于**格式探测**这类只读场景。
5. **读文件**:`.xls` ä¸Ž `.et` éƒ½ç”¨ **xlrd** ç›´è¯»ï¼ˆå®žæµ‹ `.et` æ˜¯ WPS å­˜æˆçš„ OLE2/BIFF8 å¤åˆæ–‡æ¡£ï¼Œmagic ä¸º `D0CF11E0`,xlrd å¯æ­£å¸¸æ‰“开并列举工作表);`.xlsx` ç”¨ openpyxl。**不必为了读 `.et` ä¸“门起 Excel COM**(COM åªåœ¨å¿…须取「公式计算结果」或读 `.xls` æ ·å¼æ—¶æ‰ç”¨ï¼‰ã€‚
6. **不要用「隐藏行 / éšè—å·¥ä½œè¡¨ã€åšè¿‡æ»¤**:黄石物流的隐藏行 R10 æ˜¯çœŸå®žé¡¹ç›®è¡Œï¼ˆé˜³æ–°åŽ¿ç„¦å±±ç‰©æµä»“å‚¨ä¸­å¿ƒï¼Œå·²è®¡å…¥é»„çŸ³å¸‚å·žåˆè®¡ï¼‰ï¼›æ½œæ±Ÿ/林区的可见表名反而是历史表名。判定只用「表头日期选表 + å¸‚州行切段 + é¡¹ç›®è¡Œåˆ¤å®šã€ä¸‰æ¡ã€‚
---
@@ -164,6 +164,7 @@
| 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/Ͷ×Ê/Êä³ö/´ýÈ·ÈÏÇåµ¥_2026-09-17.md
New file
@@ -0,0 +1,182 @@
# æŠ•资月报 â€”— å¾…确认清单(勾选版)
> ç”¨é€”:把开工前必须定的口径一次问完,勾完就能直接落地 Step1。
> ç”Ÿæˆæ—¥æœŸï¼š2026-09-17  维护:勾选后由我回填《字段映射表》Sheet6
> ç”¨æ³•:每条在「你的选择」写 A/B/C æˆ–直接写答案即可,不用解释。
---
## A. å¿…须先定(不定就没法写 Step1:市州月报 â†’ ä¸¤å¼ æ˜Žç»†è¡¨ï¼‰
### Q1 明细表到底更新哪几列?【最关键的 1 æ¡ã€‘
两张目标明细表的真实列位(已核对模板):
| åˆ— | å®¢è¿æ˜Žç»†è¡¨ `明细`(模板_X月客运站投资明细表.xlsx) | ç‰©æµæ˜Žç»†è¡¨ ` åˆ†é¡¹ç›®æŠ•资完成情况`(模板_X月物流站场投资明细.xls) |
| --- | --- | --- |
| H | è‡ªå¼€å§‹å»ºè®¾ç´¯è®¡å®ŒæˆæŠ•资(万元) | è‡ªå¼€å§‹å»ºè®¾ç´¯è®¡å®ŒæˆæŠ•资(万元) |
| I | æœ¬å¹´è®¡åˆ’投资(万元) | æœ¬å¹´è®¡åˆ’投资(万元) |
| J | è‡ªå¹´åˆç´¯è®¡å®ŒæˆæŠ•资(万元) | è‡ªå¹´åˆç´¯è®¡å®ŒæˆæŠ•资(万元) |
| K | å…¶ä¸­ï¼šæœ¬æœˆå®ŒæˆæŠ•资 | å…¶ä¸­ï¼šæœ¬æœˆå®ŒæˆæŠ•资 |
| L / M | å»ºè®¾é˜¶æ®µ / å½¢è±¡è¿›åº¦ | å»ºè®¾é˜¶æ®µ / å½¢è±¡è¿›åº¦ |
- **A**:只更新 **H、J、K** ä¸‰åˆ—(建设阶段/形象进度、本年计划投资都不动)
- **B**:更新 **H、J、K,外加 M å½¢è±¡è¿›åº¦**(L å»ºè®¾é˜¶æ®µä¸åŠ¨ï¼‰
- **C**:更新 **H、I、J、K、L、M** å…­åˆ—全写
- **D**:其它(请写)
> ä½ ä¹‹å‰è¯´è¿‡ã€Œæ²¡æœ‰çš„那两列不导入了」——我需要你确认那两列是不是 **L å»ºè®¾é˜¶æ®µ / M å½¢è±¡è¿›åº¦**。
> æˆ‘的建议:**A**(最稳,且与"不管建设阶段"一致)。
**你的选择:** â˜
---
### Q2 客运 7 æœˆç¼º 7 ä¸ªå¸‚州文件,程序怎么办?
7 æœˆå®¢è¿åªæœ‰ 10 ä¸ªå¸‚州报了文件,缺 **黄石、鄂州、随州、天门、潜江、仙桃、荆州**。
- **A**:跳过缺失市州,只在日志/弹窗里提示「XX å¸‚州本期无文件」
- **B**:直接报错中止,等补齐文件再跑
- **C**:跳过 + æç¤ºï¼ŒåŒæ—¶åœ¨è¾“出表里给这些市州**保留上月数据**(不删不减)
> æˆ‘的建议:**A**(先能看到结果,也不会误删历史)。
**你的选择:** â˜ã€€å¦ï¼šè¿™ 7 ä¸ªå¸‚州本期**是真没项目**,还是漏报? ☐ çœŸæ²¡é¡¹ç›®ã€€â˜ æ¼æŠ¥ï¼ˆæˆ‘去催) ☐ ä¸ç¡®å®š
---
### Q3 「校验公式」的上月底数从哪来?
校验/计算规则是「当月自年初累计 = ä¸Šæœˆè‡ªå¹´åˆç´¯è®¡ + æœ¬æœˆå®Œæˆã€ã€‚上月底数取
- **A**:从系统里已有的明细表(目标表)读上月值
- **B**:从上一期的源文件夹(`输入\客运(客运站)\7月\`)重新读一遍
- **C**:以你人工维护的《更新_X月客运站投资明细表》为准
> æˆ‘的建议:**A**(目标表就是唯一账本;避免两份数据打架)。
**你的选择:** â˜
---
### Q4 潜江物流 7 æœˆåªæœ‰ 1 ä¸ªé¡¹ç›®è¡Œï¼Œæ˜¯å¦æ¼æŠ¥ï¼Ÿ
`潜江2026.07.xlsx` é‡Œ 2026 å¹´ 7 æœˆåªæœ‰ã€Œæ½œæ±Ÿä¼ åŒ–公路港」1 ä¸ªé¡¹ç›®ã€‚
- **A**:确认就是 1 ä¸ªï¼Œç¨‹åºç…§å¸¸å†™
- **B**:我先去核实/催报,本期先跳过潜江
- **C**:我不知道,先按 1 ä¸ªå†™å¹¶æ ‡è®°ã€Œå¾…核实」
**你的选择:** â˜
---
### Q5 武汉(南山、汉口)客运没有「建设阶段」列,怎么处理?
该文件是简表布局:无开工/竣工分列、无建设阶段列,L åˆ—是「截止目前建设进展」。
- **A**:建设阶段留空,形象进度取 L åˆ—(若 Q1 é€‰ B/C æ‰æœ‰æ„ä¹‰ï¼‰
- **B**:两个都留空
**你的选择:** â˜
---
## B. Step2 / Step3 æ‰ç”¨åˆ°ï¼ˆå¯ä»¥å…ˆç­”,也可以稍后)
### Q6 汇总表 `5站场物流` è¦æ›´æ–°å“ªäº›åˆ—?
模板真实列位(已核对):`D=项目名称`、`I=自开始建设累计完成投资`、**`W=1-7月累计完成投资`**、`X=实际进度`。
- **A**:只更新 **I、W、X**
- **B**:更新 **I、W、X,并在 W å³è¾¹æ–°å¢žä¸€åˆ—「其中:本月完成投资」**(会把 X å¾€åŽæŒ¤ï¼Œæ¯ç‰ˆç»“构变化)
- **C**:其它(请写)
> å¦å¤–:W åˆ—表头写死「**1-7月**累计完成投资」,8 æœˆè¦ä¸è¦è‡ªåŠ¨æ”¹æˆã€Œ1-8月」? ☐ è¦ã€€â˜ ä¸è¦ï¼ˆä¿æŒ 1-7 æœˆï¼‰
**你的选择:** â˜
---
### Q7 《亿元投资项目》`规上项目表` è¦æ›´æ–°çš„「3 é¡¹ã€æ˜¯å“ªä¸‰é¡¹ï¼Ÿ
模板真实列位:`C=项目名称`、`F=截止到2026年7月底建设状态`、`I=总投资`、`J=截至2025年年底实际完成投资`、`X=2026年7月实际完成投资`。
**没有**「自开始建设累计 / è‡ªå¹´åˆç´¯è®¡ã€åˆ—。
- **A**:更新 **F(建设状态)+ X(7月实际完成投资)** ä¸¤é¡¹å°±å¤Ÿï¼Œå¦ 1 é¡¹å…¶å®žä¸å­˜åœ¨
- **B**:更新 **F + X + æ–°å¼€ä¸€åˆ—放自年初累计**
- **C**:请按原需求文档的 3 é¡¹å†™æ¸…楚是哪 3 é¡¹ï¼ˆåˆ—名照抄给我)
**你的选择:** â˜
---
### Q8 1 æœˆåŸºæ•°å–上年 12 æœˆæ˜Žç»†è¡¨çš„**哪一列**?
- **A**:1 æœˆçš„「自年初累计」= æœ¬æœŸæœ¬æœˆå®Œæˆï¼ˆè·¨å¹´æ¸…零),上年 12 æœˆè¡¨åªç”¨æ¥æ ¸å¯¹é¡¹ç›®åç§°æ˜¯å¦å­˜åœ¨
- **B**:1 æœˆçš„「自年初累计」= ä¸Šå¹´ 12 æœˆè¡¨çš„ **H è‡ªå¼€å§‹å»ºè®¾ç´¯è®¡**
- **C**:其它(请写)
**你的选择:** â˜
---
### Q9 编号 3 å’Œç¼–号 4 æ˜¯åŒä¸€ä»½æ–‡ä»¶ï¼Œæ¯æœˆåªæ”¾ä¸€ä»½å¯ä»¥å—?
`docs\投资\输入\模板_查询结果(投资系统-客运+物流 2026.7).xls`(149 è¡Œ Ã— 8 åˆ—)既当「上月数据表」又当「投资系统项目表」。
- **A**:可以,每月只放这一份
- **B**:不行,两件事要两份文件(请说明各自内容)
**你的选择:** â˜
---
## C. æ”¶å°¾å°äº‹
### Q10 输出怎么放?(你说「可以你做」,确认一下)
- ç›®å½•:`docs\投资\输出\<YYYY-MM>\`(按月分目录)
- å‘½åï¼šæ²¿ç”¨ 7 æœˆè¾“出件的名字,不另起名
- åŽŸæ ¼å¼åŽŸæ ·è¾“å‡ºï¼ˆåªæ”¹æ•°æ®æ ¼ï¼Œä¿ç•™å…¬å¼ä¸Žæ ¼å¼ï¼‰
- æ¯æ¬¡è¿è¡Œå‰è‡ªåЍ备份 `_bak_<文件名>_<时间戳>`
- æ—¥å¿—/报错单独出:`运行日志_<年月>.md`、`校验报错_<年月>.xlsx`
**你的选择:** â˜ åŒæ„ã€€â˜ æœ‰æ”¹åŠ¨ï¼ˆè¯·å†™ï¼‰
---
### Q11 仓库里 4 ä¸ª"被改动"的文件:还原还是保留?
我逐个比对过,这 4 ä¸ªæ–‡ä»¶**单元格数据 0 å¤„差异**,差别只是 Excel/WPS é‡æ–°ä¿å­˜å¯¼è‡´çš„æ ¼å¼é‡å†™ï¼š
| æ–‡ä»¶ | çŽ°çŠ¶ |
| --- | --- |
| `输入\客运(客运站)\7月\2026å¹´7月站场固投(南山、汉口站).xlsx` | ä»Šå¤© 12:56 è¢«æ”¹ï¼Œæ•°æ®ä¸€è‡´ |
| `输入\客运(客运站)\7月\襄阳市道路运输服务中心2026å¹´6月投资 (1).et` | ä»Šå¤© 11:25 è¢«æ”¹ï¼Œæ•°æ®ä¸€è‡´ |
| `模板\模板_全省预安排计划进度情况汇总.xls` | 9/16 17:33 è¢«æ”¹ï¼Œæ•°æ®ä¸€è‡´ |
| `模板\模板_经济强县投资统计报表.xls` | 9/16 17:33 è¢«æ”¹ï¼Œæ•°æ®ä¸€è‡´ |
- **A**:是我有意改格式 â†’ **保留**,下次一起提交
- **B**:误保存 â†’ æˆ‘用 `git restore` è¿˜åŽŸï¼ˆæ•°æ®ä¸€æ ·ï¼‰
- **C**:逐个判断(我会再问)
**你的选择:** â˜
---
### Q12 `docs\投资\` ä¸‹ä½ è‡ªå·±æ•´ç†çš„æ”¹åŠ¨ï¼Œæäº¤å—ï¼Ÿ
包括:`模板_查询结果…xls` ä»Ž `docs\投资\` ç§»åˆ° `docs\投资\输入\`;`X月…` æ”¹åï¼›2 ä¸ªæ¨¡æ¿è¢«æ›¿æ¢ï¼›5 ä¸ª `.txt` éœ€æ±‚说明被删。
- **A**:提交(我会写进本次 commit)
- **B**:先不动,我自己再整理
**你的选择:** â˜
---
### Q13 (你说要请教同事,暂缓)每个月还需要手工做模板吗?
不用答,等你同事的结论;我会先按「只用母版 + è‡ªåŠ¨æ‰©æœˆã€çš„æ–¹å‘å‡†å¤‡æ–¹æ¡ˆã€‚
docs/Ͷ×Ê/Êä³ö/Òþ²ØÊý¾ÝºËʵÇåµ¥_2026-07.md
@@ -2,6 +2,7 @@
> ç”Ÿæˆæ—¶é—´ï¼š2026-09-17
> æŽ¢æµ‹å·¥å…·ï¼š`docs\投资\工具\隐藏项探测.py`(只读,不改任何源文件)
> è¦†ç›–范围:**27/27 ä¸ªæºæ–‡ä»¶**(`.xls` / `.xlsx` / `.et` å‡å¯åªè¯»æŽ¢æµ‹ï¼‰
> æœºå™¨å¯è¯»ç»“果:`docs\投资\输出\隐藏项探测_2026-07.md` / `.txt`
---
@@ -10,7 +11,7 @@
1. **您没看错,Excel é‡Œæ‰“开确实看不到那些行/那些表——因为它们被设置成了「隐藏」。** æˆ‘不是在说"您没找到",而是说"它们被藏起来了"。
2. **程序读单元格不受"隐藏"影响**,隐藏的行/表一样能读到。所以"看不到"和"取不到"是两回事。
3. å…¨çœ 27 ä¸ªæºæ–‡ä»¶ï¼ˆå®¢è¿ 10 + ç‰©æµ 17,襄阳客运是 `.et` æ ¼å¼æš‚不能只读探测)里,**15 ä¸ªæ–‡ä»¶å«éšè—é¡¹**;其中**真正会让程序取错数的只有 1 ä¸ªï¼šåå °ç‰©æµ**(已修复)。
3. å…¨çœ **27 ä¸ªæºæ–‡ä»¶ï¼ˆå®¢è¿ 10 + ç‰©æµ 17)已全部探测完毕**:**15 ä¸ªæ–‡ä»¶å«éšè—é¡¹**(12 ä¸ªæ²¡æœ‰ï¼‰ï¼›å…¶ä¸­**真正会让程序取错数的只有 1 ä¸ªï¼šåå °ç‰©æµ**(已修复)。
---
@@ -54,14 +55,15 @@
| **客运** | `2026å¹´7月林区道路客运站场投资统计报表(月、年报).xls` | 3 | 1 å¼ ï¼š`VOOQTNP` | ç©ºè¡¨ï¼ˆ0 è¡ŒÃ—0 åˆ—) | âœ… æ— å½±å“ |
| **客运** | `2026湖北省道路客运站场投资统计报7月(恩施州).xls` | 5 | 4 å¼ ï¼š`SIMZNE`、`YESWAQ`、`BVSWOQ`、`SPRRQW` | 4 å¼ ç©ºè¡¨ï¼ˆ0 è¡ŒÃ—0 åˆ—) | âœ… æ— å½±å“ |
### 3.3 æ²¡æœ‰éšè—é¡¹çš„æ–‡ä»¶ï¼ˆ11 ä¸ªï¼‰
### 3.3 æ²¡æœ‰éšè—é¡¹çš„æ–‡ä»¶ï¼ˆ12 ä¸ªï¼‰
- å®¢è¿ï¼ˆ5 ä¸ªï¼‰ï¼šé»„冈、武汉(南山/汉口)、宜昌、荆门、孝感
- å®¢è¿ï¼ˆ6 ä¸ªï¼‰ï¼šé»„冈、武汉(南山/汉口)、宜昌、荆门、孝感、**襄阳**
- ç‰©æµï¼ˆ6 ä¸ªï¼‰ï¼šé»„冈、鄂州、襄阳、天门、仙桃、宜昌
### 3.4 æœªèƒ½æŽ¢æµ‹çš„ 1 ä¸ªæ–‡ä»¶
### 3.4 å…³äºŽ `.et`(原以为读不了,实测能读)
`襄阳市道路运输服务中心2026å¹´6月投资 (1).et` æ˜¯ WPS ä¸“有格式,`xlrd` / `openpyxl` éƒ½è¯»ä¸äº†ï¼Œ**本次未能只读探测它的隐藏项**;等程序用 Excel COM æ‰“开时再一并检测。
`襄阳市道路运输服务中心2026å¹´6月投资 (1).et` æ–‡ä»¶åæ˜¯ WPS çš„ `.et`,但它**其实是 OLE2 å¤åˆæ–‡æ¡£ / BIFF8**(文件头 `D0CF11E0A1B11AE1`),`xlrd` å¯ä»¥ç›´æŽ¥è¯»â€”—已实测读出 7 å¼ åˆ†æœˆè¡¨ï¼ˆ`2026å¹´1月`—`2026å¹´7月 `),**7 å¼ å…¨éƒ¨å¯è§ï¼Œæ— éšè—è¡Œ/列**。
所以「读 `.et` å¿…须用 Excel COM」这个判断是错的,已在差异报告里订正;27 ä¸ªæºæ–‡ä»¶çŽ°åœ¨**全部**能只读探测。
---
docs/Ͷ×Ê/Êä³ö/Òþ²ØÏî̽²â_2026-07.md
@@ -1,6 +1,6 @@
# éšè—é¡¹æŽ¢æµ‹ï¼ˆåªè¯»ï¼‰  â€”  2026-07
生成时间:2026-09-17 11:36:55
生成时间:2026-09-17 13:51:51
说明:只读扫描,不改任何源文件。「隐藏」= Excel é‡Œé»˜è®¤çœ‹ä¸åˆ°ï¼Œä½†ç¨‹åºè¯»å•元格能读到。
## å®¢è¿ï¼ˆå®¢è¿ç«™ï¼‰  ï¼ˆç›®å½•:D:\文档\ChatGPT\traffic-audit\docs\投资\输入\客运(客运站)\7月)
@@ -61,7 +61,14 @@
### è¥„阳市道路运输服务中心2026å¹´6月投资 (1).et
- æ ¼å¼ï¼šWPS `.et`(xlrd/openpyxl éƒ½è¯»ä¸äº†ï¼Œéœ€ Excel COM / WPS æ‰“开)
- å·¥ä½œè¡¨æ€»æ•° 7 ï¼šå¯è§ 7,隐藏 0
  - è¡¨ `2026å¹´1月` å°ºå¯¸ 24行×20列
  - è¡¨ `2026å¹´2月` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´3月` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´4月` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´5月 ` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´6月 ` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´7月 ` å°ºå¯¸ 26行×18列
### ï¼ˆå­æ„Ÿå¸‚道运中心)202607孝感市道路客运站场投资统计月报表.xls
docs/Ͷ×Ê/Êä³ö/Òþ²ØÏî̽²â_2026-07.txt
@@ -1,6 +1,6 @@
# éšè—é¡¹æŽ¢æµ‹ï¼ˆåªè¯»ï¼‰  â€”  2026-07
生成时间:2026-09-17 11:36:55
生成时间:2026-09-17 13:51:51
说明:只读扫描,不改任何源文件。「隐藏」= Excel é‡Œé»˜è®¤çœ‹ä¸åˆ°ï¼Œä½†ç¨‹åºè¯»å•元格能读到。
## å®¢è¿ï¼ˆå®¢è¿ç«™ï¼‰  ï¼ˆç›®å½•:D:\文档\ChatGPT\traffic-audit\docs\投资\输入\客运(客运站)\7月)
@@ -61,7 +61,14 @@
### è¥„阳市道路运输服务中心2026å¹´6月投资 (1).et
- æ ¼å¼ï¼šWPS `.et`(xlrd/openpyxl éƒ½è¯»ä¸äº†ï¼Œéœ€ Excel COM / WPS æ‰“开)
- å·¥ä½œè¡¨æ€»æ•° 7 ï¼šå¯è§ 7,隐藏 0
  - è¡¨ `2026å¹´1月` å°ºå¯¸ 24行×20列
  - è¡¨ `2026å¹´2月` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´3月` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´4月` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´5月 ` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´6月 ` å°ºå¯¸ 26行×18列
  - è¡¨ `2026å¹´7月 ` å°ºå¯¸ 26行×18列
### ï¼ˆå­æ„Ÿå¸‚道运中心)202607孝感市道路客运站场投资统计月报表.xls