相关文章推荐
面冷心慈的茶叶  ·  在spring boot ...·  5 月前    · 
愤怒的手术刀  ·  Azure Application ...·  1 年前    · 
犯傻的上铺  ·  javascript - ...·  1 年前    · 
有腹肌的板凳  ·  spring boot ...·  1 年前    · 
首先应该是这样:
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个:

  1. 将第三方导出的excel规范化(一般第三方工具都是不可控的)

  2. 绕开第三方工具生成的excel,直接获取其数据源/数据库

我以前是通过第2个方法,直接读取源数据,分析,然后得出自己的excel

只能帮你到这里了,切忌不要再花过多时间在如何修改头文件了,目前不可行。

用这个HSSFWorkbook workbook2; //读取2003格式 .xls倒是不会不会有以上的错误提示。
但是分页布局时候不管数据多少都只是分为一页,有没有什么属性可以设置自动分页。

倒是不会不会有以上的错误提示。

如果不出现这个错误提示的话,那么原始数据表应该是xls。而xlsx打开出错是因为直接修改了后缀名,而没有另存为导致的


分页布局

这个词我不是太清楚你具体指什么,是读取多个工作簿的sheet的意思吗?

sheet = workbook.GetSheetAt(0);

上面的0就是读取第一个sheet,读取哪个可以修改下。

如果读取的该sheet行数过多,可以将Sheet表赋值给dataTable,设置一个行数限制,分别显示出来

xls跟xlsx这个的另存为方式不一样吗。
另存为执行方式一样
本回答被网友采纳