關於 NPOI 導出的 Excel 出現“部分內容有問題” 的解決方法
阿新 • • 發佈:2019-04-03
刪除 xxx arr 生成 log 是否 write 屬性 字節
近期發現使用 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
關於 NPOI 導出的 Excel 出現“部分內容有問題” 的解決方法