asp.net使用NPOI导出Excel,出现“发现统计表'xxx.xlsx'中的部分内容有问题”

使用NPOI导出的Excel,打开时一直提示下面这个问题

asp.net使用NPOI导出Excel,出现“发现统计表'xxx.xlsx'中的部分内容有问题”

因为代码不是我写的,接手之后才开始这一块的调试,不是很熟悉,导致花了很多时间才解决问题。

在某度上查找原因,有人提示添加如下语句(https://www.cnblogs.com/cjm123/p/9818156.html

asp.net使用NPOI导出Excel,出现“发现统计表'xxx.xlsx'中的部分内容有问题”

其实我看很多文章都说到添加“Content-Length”,我看了我的代码,也确实是添加了的。但是我没注意到,我的代码的length,使用的是byte数组的长度,并非流的长度

asp.net使用NPOI导出Excel,出现“发现统计表'xxx.xlsx'中的部分内容有问题”

很明显它们是有区别的

asp.net使用NPOI导出Excel,出现“发现统计表'xxx.xlsx'中的部分内容有问题”

把bytes.Length.ToString()改为dataStream.Length.ToString(),问题就解决了

asp.net使用NPOI导出Excel,出现“发现统计表'xxx.xlsx'中的部分内容有问题”

解决问题后,想了一下,应该是打开Excel时,程序根据表头的长度读取文件。但是因为表头设置的长度过长,实际内容不足,所以提示“部分内容有问题”,修复时提示的是“某些部分可能已被修复或丢弃”

asp.net使用NPOI导出Excel,出现“发现统计表'xxx.xlsx'中的部分内容有问题”

花了这么长时间才解决问题,除了是因为接手代码,更主要的还是因为自己对基本知识不了解导致的。看来还是要抓紧时间充实自己才是王道。