【发布时间】:2021-07-17 16:39:43
【问题描述】:
以下代码适用于 apache poi 4.0.1 版,但在将 apache poi 升级到最新版本(4.1.2 版或 5.0.0 版)后,生成的 xls 文件已损坏,当我尝试打开它时,我无法打开它找到里面的任何数据。 (poi.jar升级后xls文件大小由4KO更新为0KO)
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public abstract class ExcelExporter
{
public static void exportPanel(String account, JTable table) {
FileOutputStream excel = null;
try {
Workbook wb = new HSSFWorkbook();
Sheet sh = wb.createSheet("hello");
Row row = sh.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue(1);
excel = new FileOutputStream("WORKBOOK.xls");
wb.write(excel);
wb.close();
excel.flush();
excel.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
你能建议吗? 谢谢,
【问题讨论】:
-
嗨,欢迎来到 StackOverflow!我对apache poi了解不多,但我认为你应该提供更多细节来帮助社区帮助你,比如你的执行日志,你如何使用给定的类等
-
您好 Jissay,感谢您的反馈。我正在使用 API org.apache.poi 创建一个带有 java 代码的 excel 文档。我正在使用上面代码中描述的类 HSSFWorkbook 来创建 xls 文件。在将 apache poi.jar 升级到最新版本之前,相同的代码可以正常工作。
-
我想知道为什么这么简单的案例会让我们通过,而您是自发布以来的第一个。因此,我想到了来自您的 swing 应用程序的多次调用或来自另一个代码部分的 Workbook.xls 上的文件锁定。
-
您好猕猴桃,感谢您的反馈。当我将 poi.jar 降级到 4.0.1 时,相同的代码会生成正确的 xls 文件,但是当我只将 poi.jar 升级到最新版本 5.0.0 时,相同的代码会生成 0 KB xls 文件。
-
不可重现。这个简单的代码适用于我使用
apache poi 4.1.2和5.0.0并产生一个可用的WORKBOOK.xls。当然不清楚String account和JTable table是如何在这里参与的,以及你是如何调用public static void exportPanel(String account, JTable table)的。所以,正如@kiwiwings 已经说过的那样,问题一定在这个简单的代码之外。
标签: java apache-poi xls excel-2016 hssfworkbook