[研究]NPOI.2.7.6升級2.8.0 已知災情 ?
2026-04-17
ChatGPT
目前 NPOI 2.7.6 → 2.8.0 升級,確實有一些「實務上常見的災情」,但不算全面性災難,多半集中在 相依套件、授權提示、與舊專案相容性。我幫你整理「已知問題 + 你這種 ASP.NET WebForms(.NET 4.8)特別要注意的點」:
🔴 1. OSMF 授權提示
Build 時出現類似:OSMF license / notice
原因是 NPOI 2.8.0 開始納入:
- Apache POI 新版本內容
- 加入 Open Source Metadata / License 提示(OSMF 類)
👉 不是錯誤,是授權提醒(Warning/Message)
影響
- 不影響執行
- 但 CI/CD 或嚴格 Build 可能被當成問題
解法
- ✔ 可忽略
- ✔ 或調整 build log filter
- ✔ 或固定用 2.7.6(企業常見)
🔴 2. .NET Framework 相容性問題(⚠️ WebForms 重點)
現象
- 編譯 OK,但執行時錯誤
- 常見:Could not load file or assembly ...
原因
2.8.0:
- target 偏向 .NET Standard 2.0+
- 舊 .NET Framework(4.6~4.8)可能:
- binding redirect 不完整
- 相依 DLL 沒帶齊
高風險相依
常見會出問題:
- System.Memory
- System.Buffers
- System.Runtime.CompilerServices.Unsafe
👉 WebForms + packages.config 很容易漏
解法
1️⃣ 加入 bindingRedirect(重要)
|
2️⃣ 或改用:PackageReference(比較穩)
🔴 3. Excel 讀寫行為差異(少數但會踩)
現象
- 日期錯誤
- 格式跑掉
- CellType 行為不同
原因:底層 Apache POI 更新
影響範圍
- .xlsx 比 .xls 穩
- 舊程式碼(尤其 CellType enum)可能壞
範例雷點
|
👉 2.8.0 有些情況需改用:
|
🔴 4. HSSF / XSSF 邊界問題(舊 Excel)
現象:.xls 寫入失敗或格式異常
原因:2.8.0 對舊格式支援更嚴格
👉 如果你有:
匯出 .xls(Excel 97-2003)
👉 風險較高
🔴 5. 記憶體與效能變化
現象:匯出大檔變慢 / 吃記憶體
原因:內部結構調整
👉 建議:大檔改用 SXSSF(streaming)
🟡 6. 套件衝突( ValueTuple 類問題)
2.8.0 可能間接拉進:
- System.ValueTuple
- 其他 BCL 補件
👉 舊專案容易出現:
- 版本衝突
- bin 目錄 DLL 混亂
✅ 綜合結論(給你實務建議)
如果你是:👉 ASP.NET WebForms + .NET Framework 4.8
✔ 保守建議
👉 留在 2.7.6(最穩)
✔ 如果要升級 2.8.0
務必做:
- 清空 bin / obj
- 補齊 bindingRedirect
- 檢查這些 DLL:
- System.Memory
- System.Buffers
- 測試:
- Excel 匯出(特別是日期)
- Excel 匯入(CellType)
- 若用 .xls 👉 重點測
💡 額外建議
如果你只是:匯出 Excel(不需複雜操作)
👉 可以考慮:ClosedXML
優點:
- API 比 NPOI 直覺
- .NET Framework 支援更穩
- 比較少相依地雷
(完)
(完)
沒有留言:
張貼留言