Java Apache POI正在创建损坏的XLSX文件
我正在尝试以XLSX格式创建一个简单的Excel文件。 我可以创建旧的XLS文件,但当我尝试创建其他格式时,文件总是损坏的 我正在使用ApachePOI4.1.1 这是我的简单代码:Java Apache POI正在创建损坏的XLSX文件,java,excel,apache-poi,Java,Excel,Apache Poi,我正在尝试以XLSX格式创建一个简单的Excel文件。 我可以创建旧的XLS文件,但当我尝试创建其他格式时,文件总是损坏的 我正在使用ApachePOI4.1.1 这是我的简单代码: Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("new sheet"); Row row = sheet.createRow(0); Cell cell = row.createCell(
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("new sheet");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hellooooo");
FileOutputStream fo = new FileOutputStream("C:/Users/Public/invoice_file/Test.xlsx");
try {
wb.write(fo);
fo.flush();
fo.close();
wb.close();
}catch (Exception e) {
e.printStackTrace();
}
这是错误消息:使用
org.apache.poi.ss.usermodel.WorkbookFactory
//Parameter indicates whether you want to create an XSSF formatted file or not
WorkbookFactory.create(true); //true creates XSSF formatted file
将返回一个
org.apache.poi.ss.usermodel.Workbook
然后,您可以使用
Workbook.write(OutputStream)
解决方案:
try (Workbook wb = WorkbookFactory.create(true)) {
Sheet sheet = wb.createSheet("new sheet");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hellooooo");
try (FileOutputStream fos = new FileOutputStream("D:/Test.xlsx")) {
wb.write(fos);
}
}
将文件扩展名更改为
.xlsx
不会将文件转换为xlsx类型。这基本上在我的机器上可以工作,但我将文件输出流的声明移动到try
的范围内(可能是原因),并使用了不同的路径表示法(无可否认,这不太可能导致文件损坏)。您可以尝试将变量声明为XSSF工作簿、XSSFSheet、XSSFRow等吗?@JLazar0是的,我可以。但这不能解决我的问题。@deHaar您使用的poi版本号是什么?我尝试了您的解决方案,但总是出现相同的错误…请您将确切的错误放在这里?还是与您之前在问题中发布的相同?我尝试了m在上述解决方案中,文件打开得很好。同样的问题。这很奇怪。我可以很好地打开它。您使用的是哪个JDK版本?我不认为这会有影响,但我使用的是JDK 14。我使用的是Java 1.8。