簡體   English   中英

無法在java poi中讀取excel文件(.xls)

[英]Unable to read excel file(.xls) in java poi

試圖使用工作簿wb = WorkbookFactory.create(new File(fileName)); //閱讀以下鏈接中的xls文件

嘗試過其他一些jxcel庫,沒有運氣,如果我做錯了什么可以幫助

XLS文件: https//www.huduser.gov/portal/datasets/excel/wy_foreclosure.zip

碼:

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
.......
......

try (InputStream is = new FileInputStream(new File(fileName));
                Workbook wb = WorkbookFactory.create(new File(fileName));) {

        }

異常跟蹤:

Exception in thread "main" org.apache.poi.util.RecordFormatException: Not enough data (0) to read requested (2) bytes
    at org.apache.poi.hssf.record.RecordInputStream.checkRecordPosition(RecordInputStream.java:243)
    at org.apache.poi.hssf.record.RecordInputStream.readShort(RecordInputStream.java:262)
    at org.apache.poi.hssf.record.PrintSetupRecord.<init>(PrintSetupRecord.java:74)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.poi.hssf.record.RecordFactory$ReflectionConstructorRecordCreator.create(RecordFactory.java:84)
    at org.apache.poi.hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:345)
    at org.apache.poi.hssf.record.RecordFactoryInputStream.readNextRecord(RecordFactoryInputStream.java:288)
    at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:254)
    at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:494)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:344)
    at org.apache.poi.hssf.usermodel.HSSFWorkbookFactory.createWorkbook(HSSFWorkbookFactory.java:49)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:314)
    at org.apache.poi.ss.usermodel.WorkbookFactory.createHSSFWorkbook(WorkbookFactory.java:292)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:128)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:74)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:281)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:253)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:234)
    at com.noteunlimited.util.ForeClosureDump.generateStatistics(ForeClosureDump.java:55)
    at com.noteunlimited.util.ForeClosureDump.main(ForeClosureDump.java:64)

要打開現有的XLS文件,您可以使用以下代碼:

import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class OpenXLS {

  public static void main(String[] args) throws Exception {

    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("yourFile.xls"));
    // Do something with it.
    workbook.close();
  }
}

這不適用於您提供的文件。 但是當你在LO Calc中打開其中一個文件並保存它而不做任何改動時,一切都很好。 所以,你的文件似乎不對。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM