Apache POI es una API Java de Java Crossplatform de código abierto gratuita y de código abierto escrita en Java. Apache POI proporciona la función de los programas Java para leer y escribir Archivos de formato de Microsoft Office.
Página de descarga del proyecto: http://poi.apache.org/download.html
Apache POI es una API Java que crea y mantiene varias API de Java que cumplen con el estándar de Office Open XML (OOXML) y el formato de documento compuesto OLE 2 de Microsoft (OLE2). Se puede usar para leer y crear y modificar los archivos de MS Excel usando Java. Además, también puede usar Java para leer y crear archivos MS Word y MSpowerPoint. Apache POI proporciona una solución Java Operation Excel.
Ejemplo de lectura del documento de Excel
Utilizamos HSSFWorkBook en POI para leer datos de Excel.
Public void test (archivo de archivo) lanza IOException {inputStream inp = new FileInputStream (archivo); HSSFWorkBook Workbook = nuevo HSSFWorkBook (INP); // Libro de trabajo ... Operación transversal} El código anterior muestra que está bien leer el archivo de Excel2003 (XLS), pero una vez que se lee el archivo de Excel2007 (XLSX), se informará una excepción: "Los datos suministrados parecen estar en la oficina 2007+ XML. Usted está llamando a la parte de POI con los documentos de OLE2.
Después de revisar la información, la versión Excel 2007 de los archivos de Excel debe leerse utilizando XSSFWorkBook, de la siguiente manera:
Public void test (archivo de archivo) lanza IOException {inputStream inp = new FileInputStream (archivo); XSSFWorkBook Workbook = new XSSFWorkBook (INP); // Libro de trabajo ... Operación transversal} Nota: XSSFWorkBook requiere importación adicional de poi-ooxml-3.9-sources.jar y poi-ooxml-schemas-3.9.jar.
De esta manera, no hay problema en la importación de Excel2007, pero se informa que una excepción importa Excel2003.
Por lo tanto, al importar Excel, intente juzgar la versión de Excel y llamar a diferentes métodos.
He pensado en usar el nombre del sufijo de archivo para determinar el tipo, pero si alguien cambia el sufijo de XLSX a XLS, si usa la función XLSX para leer, el resultado es un error; Aunque el nombre del sufijo es correcto, la codificación de contenido del archivo, etc., no es correcto.
Finalmente, se recomienda usar WorkBookFactory.Create (InputStream) en Poi-Ooxml para crear un libro de trabajo, porque tanto HSSFWorkBook como XSSFWorkBook implementan la interfaz de libro de trabajo. El código es el siguiente:
Libro de trabajo wb = workbookFactory.create (is);
Como puede imaginar, en la función WorkBookFactory.Create (), debe haber un juicio sobre el tipo de archivo. Echemos un vistazo a cómo los jueces del código fuente:
/ ** * Crea el HSSFWorkBook apropiado / XSSFWorkBook de * el InputStream dado. * Su flujo de entrada debe admitir Mark/RESET, o * estar envuelto como un {@link PushbackInputStream}! */ public static Workbook Create (InputStream INP) lanza IOException, InvalidFormateException {// Si claramente no hace marcar/ restablecer, envolver if (! Inp.markSupported ()) {inp = nuevo PushBackInputStream (INP, 8); } if (poifsfilesystem.haspoifsheader (inp)) {return new hssfworkbook (INP); } if (poixmlDocument.hasoOoXMLHeader (inp)) {return new XSSFWorkBook (OPCPackage.open (INP)); } tirar nueva ilegalArgumentException ("su entrada de entrada no era ni una corriente de Ole2 ni una corriente ooxml"); }Puede ver que los objetos de libro de trabajo apropiados se crean por separado de acuerdo con el tipo de archivo. Se juzga en función de la información del encabezado del archivo. En este momento, incluso si se cambia el nombre del sufijo, aún no se puede pasar.