關於 NPOI 導出的 Excel 出現“部分內容有問題” 的解決方法


近期發現使用 NPOI 導出的 Excel 文件,有部分用戶反映在打開時報錯,測試了一下,發現在低版本的 Office 中(2003版,配合2007格式兼容包)打開正常,但在高版本 Office 中,會報以下錯誤:

發現“XXX.xlsx”中的部分內容有問題。是否讓我們盡量嘗試恢復?如果您信任此工作簿的源,請單擊“是”。

點擊 “否” 就不打開文件了,點擊 “是” 之后可以打開文件,出現以下提示:

通過修復或刪除不可讀取的內容,Excel 已能夠打開該文件。
...
Excel 已完成文件級驗證和修復。此工作簿的某些部分可能已被修復或丟棄。

同一個文件用WPS打開則正常,但我們不可能要求用戶都用WPS,這不現實。

上網搜了一下,很多方案都試了也不行。

最后經過研究發現,在獲得 workbook.Write(ms) 生成的 MemoryStream 后,使用了 ms.GetBuffer() 返回文件內容,導致生成的 Excel 文件結尾處有大量的 00(空字節),改為 ms.ToArray() 即可得到正常的文件了。

 

另附:導出的 Excel 都被自動鎖定,要在文件屬性中點一下“解除鎖定”才能打開,這個問題的解決方案:https://blog.csdn.net/maxsky/article/details/20467511


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM