关于 NPOI 导出的 Excel 出现“部分内容有问题” 的解决方法

摘要:
近期发现使用NPOI导出的Excel文件,有部分用户反映在打开时报错,测试了一下,发现在低版本的Office中打开正常,但在高版本Office中,会报以下错误:发现“XXX.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复?如果您信任此工作簿的源,请单击“是”。点击“否”就不打开文件了,点击“是”之后可以打开文件,出现以下提示:通过修复或删除不可读取的内容,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

免责声明:文章转载自《关于 NPOI 导出的 Excel 出现“部分内容有问题” 的解决方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇干掉mapper.xml!MyBatis新特性动态SQL真香!cookie、session、sessionid 与jsessionid(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Excel-漏斗图分析(差异分析)

Excel-漏斗图分析(差异分析) 漏斗图适用于业务流程比较规范、周期长、环节多的流程分析,通过漏斗各环节业务数据的比较,能够直观地发现和说明问题所在。在网站分析中,通常用于转化率比较,它不仅能展示用户从进入网站到实现购买的最终转化率,还可以展示每个步骤的转化率,如图9-91所示。 图9-91使用漏斗图展示的网站客户转化率 漏斗图不仅能够提供用户在业务...

excel 导入 sqlserver 字符串被截取为255长度解决方案

excel表格导入sqlserver数据表中 内容被截取为255长度的字符串。 注意:excel是通过前8行(表头的首行除外)的数据类型来判断导入数据的数据格式的,例如前8行出现整数型,那么默认就用整数型的数据读取方式导入数据,又例如前8行出现的是长度小于255的字符串类型,那么就会默认整列都是小于255的字符串,这样导入的时候长度大于255的字符串就会被...

Excel中,从字符串中截取指定字符

情况一:提取字符串中的数字 目标:提取C列的全部数字 方法一:Excel中的FIND函数+MID函数   方法:想要从指定位置截取,用到MID函数。因为right和left函数都是从第一个字符或者最后一个字符开始截取,不适合。     MID语法:MID(字符串,截取开始位置,返回字符的个数)     因为截取的开始位置不统一,但是要截取的数字前面都有#...

无服务端纯前台导出数据到Excel-JSExcelXML.js 使用指南

JSExcelXML 使用指南 先来个效果预览  a.前端显示   b.导出excel效果 表头部分   表尾部分   1.功能描述  JsExcelXml 采用js生成excel中可显示的xml格式文本,将输出文本保存为.xls格式即可,可实现所见即所得,该版本和上个版本有较多的改动,现在的版本更加灵活,该版本分别在IE8,9,10,chrome,Fir...

C#读取EXCEL文件的三种经典方法

1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path)  {  string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";...

用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式

做过很多次导出excel了。都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法。。。 弄过好几次都没有解决,最近又要导出excel了,下决心一定要找到解决办法 自己在excel里测试过,较长的数字,都会自动变成科学计数法,除非我们把单元格格式设置成“文本型” 哈哈,似乎找到了思路:用po...