2010-11-24 32 views
6

Tengo un problema con el proyecto de POI de Apache.Apache POI, usando tanto XSSF como HSSF

No pude usar XSSF y HSSF en el "Same Java Class". ¿Qué jarra debo descargar o qué artefacto debo obtener agregar a maven?

Quiero manejar ambos xls y xlsx archivos al mismo tiempo. Cuando recibo un error de versión de Excel, cambiaré el XSSF a HSSF o HSSF a XSSF.

¿Cómo puedo hacer esto?

Respuesta

12

lugar de hacer eso, trate de usar la nueva versión de Apache POI 3.7, tiene paquete de los SS que se ocupa tanto HSSF y XSSF sin preocuparse por el tipo

Detalles aquí: http://poi.apache.org/spreadsheet/index.html

+0

Primero de todo, gracias por su ayuda. He revisado la página que ha mencionado. De acuerdo. He añadido el código de abajo en mi pom.xml: org.apache.poi poi-contrib 3,7-beta3 Sin embargo, a pesar de que mi Java clase todavía no puede resolver XSSFWorkbook? No hay ningún problema en HSSFWorkbook(); Libro de trabajo [] wbs = new Workbook [] {nuevo HSSFWorkbook(), nuevo XSSFWorkbook()}; –

+5

XSSFWorkbook está en groupId: org.apache.poi, artifactId: poi-ooxml – rlovtang

5

Aparte de la "norma "la solución de paquete de los SS, también puede simplemente utilizar un if statement para cargar correctamente el derecho workbook format en un objeto Workbook interface, así:

Workbook workbook; //<-Interface, accepts both HSSF and XSSF. 
File file = new File("YourExcelFile.xlsx"); 
if (FileUtils.getFileExt(file).equalsIgnoreCase("xls")) { 
    workbook = new HSSFWorkbook(new FileInputStream(file)); 
} else if (FileUtils.getFileExt(file).equalsIgnoreCase("xlsx")) { 
    workbook = new XSSFWorkbook(new FileInputStream(file)); 
} else { 
    throw new IllegalArgumentException("Received file does not have a standard excel extension."); 
} 
+0

Y 'IWorkbook' si usa NPOI –

0

uso de la fábrica en vez, que h andles tanto xssf como hssf

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

Workbook wb = WorkbookFactory.create(new File("file")) 
Cuestiones relacionadas