使用apache poi(.xlsx)excel 2007不可读的内容

时间:2013-02-13 15:22:02

标签: java excel excel-2007 row apache-poi

我在使用XSSF的excel 2007上使用apache poi时遇到问题

我下面有两个代码片段(胖指)。第一个似乎有效,因为工作簿在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();

编辑:实际上它表明第一个片段也引起了一个问题...有时???? 我的印象是我做错了什么......有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。我认为问题可能在于评论的处理。 就我而言,excel文件被报告为"损坏"当评论出现时,每当轮班完成时,通过Excel。 Excel修复了该文件并报告它删除了注释部分,其余的都没问题。没有注释但具有相同处理代码的Excel文件不会导致任何问题。

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