excel 2007使用apache poi(.xlsx)无法读取的内容

我有问题使用apache poi为Excel 2007使用XSSF

我有两个代码片段(胖指)。 第一个似乎工作,因为工作簿在Excel 2007中正确打开,并有一些变化。

如果我运行第二个代码片段,然后在Excel 2007中打开,我得到关于不可读内容的错误。 我必须点击一个确认框,然后Excel打开我的文件。

为什么第二个代码片段导致这个错误? 唯一的区别是在第二个我试图从第2行(零索引)上移两行的所有行…

我真正想要做的是删除一些标题行,并从文件中得到了一些页脚行后。 我没有做任何事情。 我在猜测我误解了这个API,但是现在我一直在为此而战。

有任何想法吗? 我也应该移动行,或删除它们,或两者的组合?

String filename = "C:\\file.xlsx"; FileInputStream file = new FileInputStream( new File(fileName) ); XSSFWorkbook wb = new XSSFWorkbook(file); XSSFSheet sheet = wb.getSheetAt(0); int lastRow = sheet.getlastRow(); sheet.shiftRows(1, lastRow, -1); file.close() FileOutputStream out = new FileOutputStream(fileName); wb.write(out); out.flush(); out.close(); 

 String filename = "C:\\file.xlsx"; FileInputStream file = new FileInputStream( new File(fileName) ); XSSFWorkbook wb = new XSSFWorkbook(file); XSSFSheet sheet = wb.getSheetAt(0); int lastRow = sheet.getlastRow(); sheet.shiftRows(2, lastRow, -2); file.close() FileOutputStream out = new FileOutputStream(fileName); wb.write(out); out.flush(); out.close(); 

编辑:其实它apears,第一个片段也造成了一个问题…有时? 我在印象中我做错了什么…有什么build议吗?

我遇到了类似的问题。 我认为问题可能在于处理意见。 在我的情况下,excel文件被Excel报告为“损坏”,只要在有评论出现的时候进行转换。 Excel修复了这个文件,并报告说它删除了评论部分,剩下的就没事了。 没有评论但具有相同处理代码的Excel文件不会导致任何问题。

对不起,这不能解决问题,但也许它提供了一个解决方法。 就我而言,我以编程方式删除所有评论(丑陋)。