使用POI创build一个XLSX文件

我有两个Java程序:一个是创build和写入数据到XLSX文件,另一个是从同一个文件读取数据。

在我的第一个程序中,我使用下面的语句将数据写入XLSX文件。

FileOutputStream prelimOut = new FileOutputStream(new File("D:\\News\\Prelim.xlsx")); XSSFWorkbook out = new XSSFWorkbook(); XSSFSheet spreadSheet = out.createSheet("ResultSheet"); 

在我的驱动器中,我已经按预期创build了文件。 当我试图用这个代码从不同的程序读取相同的文件

 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class GetCellCount { public static void main(String[] args) throws IOException { FileInputStream input_document = new FileInputStream(new File("D:\\News\\Prelim.xlsx")); XSSFWorkbook my_xlsx_workbook = new XSSFWorkbook(input_document); XSSFSheet my_worksheet = my_xlsx_workbook.getSheetAt(0); Iterator<Row> rowIterator = my_worksheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "\t\t"); break; case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "\t\t"); break; } } System.out.println(""); } my_xlsx_workbook.close(); input_document.close(); } } 

这是抛出以下错误

 Exception in thread "main" org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13] at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:258) at GetCellCount.main(GetCellCount.java:14) Caused by: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13] at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:203) at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:673) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:274) at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) ... 2 more 

当更改path并访问另一个XLSX文件(直接在Excel中创build)时,数据显示正确。

另外,当我通过右键单击这两个Excel文件的属性时,我得到的文件types为MS Office Excel OpenXML (.xlsx) ,这两个文件都是相同的。