0

xlsxlsxファイル形式の両方を読みたいです。フォーマットは正常に機能していxlsxますが、ファイルのアップロード中に次のエラーが発生しxlsます。

コード:

try {

    FileInputStream fileInputStream = new FileInputStream("/apps/" + fileName);
    //POIFSFileSystem fsFileSystem = new POIFSFileSystem(fileInputStream);

    Workbook workBook = WorkbookFactory.create(OPCPackage.open(fileInputStream));
    //XSSFWorkbook workBook1 = new XSSFWorkbook();
    Sheet ssSheet = workBook.getSheetAt(0); 

    Iterator rowIterator = ssSheet.rowIterator();

    while (rowIterator.hasNext()) {
        Row ssRow = (Row) rowIterator.next();
        Iterator iterator = ssRow.cellIterator();
        List cellTempList = new ArrayList();
        while (iterator.hasNext()) {
            Cell ssCell = (Cell) iterator.next();
            cellTempList.add(ssCell);
        }
        cellDataList.add(cellTempList);
    }
} catch (Exception e) {
    e.printStackTrace();
}

エラー:

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:148)
      at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:623)
      at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:230)

助けてください。

-ありがとう

4

1 に答える 1

3

あなたの問題は、を使用していOPCPackageても、 を使用してワークブックを作成しようとしていることが原因だと思いますWorkbookFactoryOPCPackage内部のxmlファイルを読み取ることができるようにするために「解凍」します.xlsxが、HSSFはバイナリファイルであるため、これは機能しません。

私のお勧めは、次のような別のコンストラクターを使用することです

WorkbookFactory.create(InputStream input)

私はそれがうまくいくはずだと思います。

于 2012-08-24T14:53:21.343 に答える