2012-04-18 9 views
5

Ho bisogno di aiuto per leggere i file xls usando XSSF di apache.Ho bisogno di aiuto per apache poi leggere xls con XSSF

L'implementazione di XSSF funziona correttamente per "xlsx". Non funziona per i file "xls".

Ecco il codice:

XSSFWorkbook workBook = new XSSFWorkbook("fileName"); 
    XSSFSheet sheet = workBook.getSheetAt(0); 
    XSSFRow row = sheet.getRow(0); 

Qualsiasi soluzione è apprezzato.

+0

Avete provato a leggere il [Apache POI Guida Veloce] (http://poi.apache.org/ foglio di calcolo/come-to.html # user_api)? Ti mostra come leggere e scrivere entrambi i file XSSF e HSSF con codice praticamente identico – Gagravarr

+0

Grazie per la riproduzione. Sì, posso fare separatamente per .xml HSSF e per .xlsx XSSF. Ma esiste un modo in cui possiamo raggiungere entrambi con l'implementazione singola? –

risposta

9

Invece di utilizzare direttamente le classi XSSF, è necessario utilizzare le interfacce che sono comuni tra i due HSSF (.xls) e XSSF (.xlsx). Il frammento di codice dalla tua domanda allora diventa:

Workbook wb = WorkbookFactory.create(file); // Or InputStream 
Sheet sheet = workBook.getSheetAt(0); 
Row row = sheet.getRow(0); 
Cell cell = row.getCell(0); 
System.out.println("Cell A1 is of type " + cell.getCellType()); 

Vedere la Apache POI QuickGuide Per ulteriori informazioni ed esempi

+0

questo non sembra funzionare con xlsx. Ogni volta che provo a caricare un file Excel in quel formato, ottengo uno strano errore di riflessione: java.lang.reflect.InvocationTargetException. Sto memorizzando le mie righe che ottengo dal file excel in un vettore, quindi passando quel vettore ad un'altra funzione. Quando sono dentro quella funzione, il vettore è sempre vuoto con un file XLSX, ma ha il valore corretto con i file XLS. – berto77

+0

Inoltre, quel collegamento non demonstarte xssf. Solo hssf. – berto77

+0

Lo fa: il codice lì funziona in modo identico sia per HSSF che per XSSF, dipende solo dal tipo di cartella di lavoro che si alimenta nella parte superiore. Se hai problemi, fai una nuova domanda e pubblica lo stacktrace completo # – Gagravarr

Problemi correlati