| | |
| | | | 12 | æ¯çç» Excel éååä½ç§¯ 959,706 -> 1,492,121 åèï¼å¯¼åºä»¶ 950,186 -> 1,331,599ï¼ | çº¯æ ¼å¼å¼éï¼æ°æ®æ å½±å | è®°å½ | |
| | | |
| | | 详è§ãåè½æµè¯æ¥å/åè½æµè¯æ¥å_è´§è¿é¡µç¾ç´¯è®¡åä¿®å¤ä¸èææ¸
ç_2026-09-16.mdãã |
| | | |
| | | --- |
| | | |
| | | ## åä¸ã2026-09-16 è¡¥å
ï¼2026-07 æ¯çè¡¥é½ & 导åºä»¶ãExcel æä¸å¼ãæ ¹å ï¼P0ï¼ |
| | | |
| | | ### 13.1 çç¶ä¸æ ¹å |
| | | |
| | | | 项 | å
容 | |
| | | |---|---| |
| | | | çç¶ | `GET /api/report/export/summaryWorkbook?period=2026-07&mode=month` çæç xlsxï¼**Excel æä¸å¼**ï¼COM æ¥ãä¸è½åå¾ç±» Workbooks ç Open 屿§ãï¼`CorruptLoad=1` ä¿®å¤æ¨¡å¼åæ ·æä¸å¼ï¼ï¼2026-08 忥壿£å¸¸ | |
| | | | ç´æ¥åå | 导åºä»¶éæ **19 个模å¼éæ³æ ¼**ï¼`<c r="E15" s="111" t="n"><v>67.0</v><is><t>67.00</t></is></c>` ââ `t="n"` ä¸å
许带 `<is>`ï¼inlineStr ä¸ç¨ï¼ | |
| | | | æ·±å±åå | 7 ææ¯çç± **openpyxl** ååºï¼`docProps/app.xml` = `Microsoft Excel Compatible / Openpyxl 3.1.5`ï¼ææ¬å `<is>`ï¼ï¼8 ææ¯çæ¯ **Excel åç**ï¼ææ¬èµ° sharedStringsï¼ãPOI çé¨ååå
¥è·¯å¾åªæ¹ `t`/`<v>`ã䏿¸
æ§ `<is>` | |
| | | | 触åè·¯å¾ | 7 æåå¨ `_å¤ä»½_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_æ¸
çå_20260904.xlsx` â `restoreSummaryMonthlyBlocks` æ´æ ¼åå¡« â å¾ inlineStr æ ¼éåå¼ç䏿§ `<is>`ã8 ææ `_å¤ä»½_*`ï¼ä¸èµ°åå¡«ï¼æ
æ£å¸¸ | |
| | | | å½ä¸ä½ç½® | leave-one-out å®ä½å° **sheet9ãå
¬äº¤ã17 æ ¼ + sheet12ã轨éã轮渡ã2 æ ¼** | |
| | | |
| | | ### 13.2 ä¿®å¤ï¼`traffic-audit-server`ï¼ |
| | | |
| | | 1. **`exportSummaryWorkbook` æ°å¢ `normalizeStaleInlineStrings(wb)`**ï¼è½ç忏
æææãé `inlineStr` å´æ®ç `<is>`ãçæ ¼åï¼å¹çï¼ï¼å½ä¸å³æ warn æ¥å¿ã |
| | | 2. **`restoreSummaryMonthlyBlocks` æ°å¢ `skipFreightHistoryBlocks`**ï¼ã è´§è¿ã页 **T åå以å**ï¼2025/2024/2023/2022/2021 年度å + å年累计/ç´¯è®¡åæ¯åï¼**æ°¸ä¸ä»å¤ä»½æ¯çåå¡«** ââ 䏿¢æãä¸å£å¾æå左忰¸ä¸åå¡«ãåä¸æè·¯ï¼é¿å
è¡¥é½è¢«ãçæå夿´»ãã |
| | | |
| | | ### 13.3 2026-07 æ¯çè¡¥é½ï¼å£å¾ä¸ 8 ææ¯ç对é½ï¼ |
| | | |
| | | - 年度åï¼æ¯åï¼ï¼`r7/r9/r8/r10 = SUM(17 å¸å·å¯¹åºè¡)`ã`r5 = r7+r9`ã`r6 = r8+r10` â 360 æ ¼ï¼ |
| | | - 累计åï¼`DX = SUM(DK:DV)`ï¼2022ï¼ã`EM = SUM(EA:EL)`ï¼2021ï¼å**æ´å为空**ï¼ã`DY = IFERROR(DX/SUM(EA:EL)-1,"")`ï¼2022 ç´¯è®¡åæ¯ï¼å为**忻叏é**ï¼â 324 æ ¼ï¼ |
| | | - 2023 累计 `CU = BW+BY+â¦+CS` æ¬æ¥å°±æ£ç¡®ï¼æªæ¹ï¼`EN`ï¼2021 ç´¯è®¡åæ¯ï¼æå£å¾ä¿æä¸ºç©ºã |
| | | - ä¸æè¯æ®ï¼æ¯ç `DX5=144979.2825`ï¼æ§å¸¸é `144979.285376043`ï¼å·® 0.0029 = å
¨çè§ä¸å¸¸éä¸ 17 å¸å·ä¹åçå·®ï¼ã`EM5=161309.53162`ã`CU5=173045.296428512`ï¼ä¸ 8 ææ¯ç `DZ5/EO5/CW5` **å®å
¨ç¸ç**ã |
| | | - å¤ä»½ï¼`docs/çææ±æ»å¤§è¡¨/_bak_2026å¹´7æéè·¯è¿è¾éæ±æ»è¡¨_è¡¥é½å_20260916.xlsx`ã**åå¿æ¹å为 `_å¤ä»½_` å¼å¤´**ï¼å¦åä¼è¢« `resolveSummaryDonor` å½ donor åå¡«ã |
| | | |
| | | ### 13.4 æ¬æ¬¡æ°å¢çææ¥å |
| | | |
| | | | é®é¢ | åå | å¤ç½® | |
| | | |---|---|---| |
| | | | Excel COM **é´ææ§**æ¥åä¸ä¸ªéï¼å¯¼è´è¯¯å¤ã8 æä»¶ä¹æä¸å¼ã | æ¯æ¬¡ `New-Object -ComObject Excel.Application` çä¸ç**å¤å¿ EXCEL è¿ç¨**伿±¡æåç»å®ä¾ | æ¯ä¾æµå®æãæ¬æ¬¡æ°å»ºç EXCEL è¿ç¨ã强æåæµä¸ä¸ä¾ï¼`Quit()`+`ReleaseComObject` å¹¶ä¸å¤ | |
| | | | ç¼è¯æ¥ãæ¾ä¸å° isSetSheetData()ã | `CTWorksheet.sheetData` æ¯ XSD **å¿
å¡«**å
ç´ ï¼ä¸çæ `isSetXxx` | æ¹ç¨ `ctw.getSheetData() != null` | |
| | | | é¨ä»¶çº§ diff 太大è·ä¸å¨ | 对 519KB ç `styles.xml` ç´æ¥ `difflib` æ¯ O(n²) | å
æé¨ä»¶æ¯åè尺寸/æ¯å¦ç¸çï¼åªå¨å¿
è¦çå°é¨ä»¶ä¸å diff | |
| | | |
| | | ### 13.5 éçé®é¢å¢é |
| | | |
| | | | # | é®é¢ | å½±å | ç¶æ | |
| | | |---|---|---|---| |
| | | | 13 | 2026-06 / 2026-09 æ æ¯ç | é¢è§ `ready=False`ãæªæ¾å°æ¨¡æ¿æä»¶ãï¼æ æ³åºæ° | éå
建æ¯çï¼ç¨æ·ç¬¬ 5 é®çå»¶ä¼¸ï¼ | |
| | | | 14 | ä»åºæ ¹ `_*.*` ä¸´æ¶æä»¶ç»§ç»å¢å¤ï¼`_hyb_*` / `_loo_*` / `_v2_*` / `_final_*` / `_fixed_*` / `_t7_*` / `_poijar`ï¼ | ä½ç§¯/å¯è¯»æ§ | ç»ç¨æ·åæå忏
ç | |
| | | |
| | | > 第 10 项ï¼2026-07 导åºä»¶å° 2 å / 7 ææ¯çæ¯ã1-4 æéª¨æ¶ãï¼æ¬èå·²å¤çï¼å¯¼åºç«¯ä¼**èªå¨è¡¥åº 5/6/7 æè¡¨å¤´ä¸å
¬å¼**å¹¶éç®ç´¯è®¡å
¬å¼ï¼æ¯çå·²è¡¥é½ 2021/2022/2023 累计åï¼æ
å
³é该项ã |