C#开发NPOI生成excel2007(.xlsx格式)表格时候总是提示发现不可读取的内容是设置错误造成的,解决方法为:
1、首先打开一个可用的Excel文件,然后点击【文档】。
2、然后点击【打开】,点击【浏览】,如下图所示。
3、保存到桌面【另存为】-【计算机】-【桌面】。
4、输入文件名,点击保存。
5、Excel就可以显示出内容了。
注意事项:
Excel虽然提供了大量的用户界面特性,但它仍然保留了第一款电子制表软件VisiCalc的特性:行、列组成单元格,数据、与数据相关的公式或者对其他单元格的绝对引用保存在单元格中。
C#开发NPOI生成excel2007表格时候总是提示发现不可读取的内容是设置错误造成的,解决方法为:
1、在我们的电脑上打开office excel,打开出现问题的excel文件。
2、在打开的时候,选择打开并修复。
3、弹出框之后,选择修复excel文件,如下图所示。
4、可以看到excel已经修复完成,提示已经可以使用excel打开了。
注意事项:
Excel虽然提供了大量的用户界面特性,但它仍然保留了第一款电子制表软件VisiCalc的特性:行、列组成单元格,数据、与数据相关的公式或者对其他单元格的绝对引用保存在单元格中。
本回答被网友采纳首先应该是这样:
HSSFWorkbook workbook2; //读取2003格式 .xls
XSSFWorkbook workbook1; //读取2007格式 .xlsx
我用HSSFWorkbook workbook2; //读取2003格式 .xls开发是没问题的,换成XSSFWorkbook workbook1; //读取2007格式 .xlsx的时候才出问题的。
对的,我注释写反了。
问下有没有具体弹出什么错误吗?给你个简单的读取示例:
XSSFWorkbook workbook;
string path=Environment.GetFolderPath(Environment.SpecialFolder.Personal)+"**.xlsx";
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);
workbook = new XSSFWorkbook(fs);
sheet = workbook.GetSheetAt(0);
我的NPOI是2.0.6.0的找不到FileStream我用MemoryStream.
弹出的错误是如图。
FileStream是System.IO提供的,和NPOI没有关系。
根据你这个错误提示,我发现是你的Excel文档应该是有问题的,excel的头文件不对,NPOI不识别
解决办法是另存为.xlsx再尝试
另存为的话解决问题的根源,生成后第一次打开就就有这个提示。
点击是也可以继续打开表格的,但这样下去不是问题,我想知道是什么原因导致的。
你所说的头文件不对,我有点不太清楚。能否再具体点。
excel由第三方工具导出的话经常遇到这种不规范结果,导致NPOI读取不了
不规范的excel现在还无法直接修改其头文件,导致现在这个问题仍旧搁置中,我曾经也困扰了很长一段时间。
目前可以考虑的方法有2个:
将第三方导出的excel规范化(一般第三方工具都是不可控的)
绕开第三方工具生成的excel,直接获取其数据源/数据库
我以前是通过第2个方法,直接读取源数据,分析,然后得出自己的excel
只能帮你到这里了,切忌不要再花过多时间在如何修改头文件了,目前不可行。
追问用这个HSSFWorkbook workbook2; //读取2003格式 .xls倒是不会不会有以上的错误提示。
但是分页布局时候不管数据多少都只是分为一页,有没有什么属性可以设置自动分页。
倒是不会不会有以上的错误提示。
如果不出现这个错误提示的话,那么原始数据表应该是xls。而xlsx打开出错是因为直接修改了后缀名,而没有另存为导致的
分页布局
这个词我不是太清楚你具体指什么,是读取多个工作簿的sheet的意思吗?
sheet = workbook.GetSheetAt(0);上面的0就是读取第一个sheet,读取哪个可以修改下。
如果读取的该sheet行数过多,可以将Sheet表赋值给dataTable,设置一个行数限制,分别显示出来
追问xls跟xlsx这个的另存为方式不一样吗。
追答另存为执行方式一样
本回答被网友采纳