Red de conocimiento informático - Problemas con los teléfonos móviles - Su flujo de datos no es ni OLE2 ni OOXML

Su flujo de datos no es ni OLE2 ni OOXML

Recientemente, utilicé Apache poi para exportar a Excel y encontré el siguiente problema:

Al principio, comparé otros proyectos web y no encontré una solución. Finalmente, encontré el código fuente que arroja esta excepción:

org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:75)

Como dijiste Como Verá, cuando llama a WorkbookFactory.create(inputStream) para crear un libro de trabajo, se diferencia según el tipo de archivo (encabezado) y crea el objeto de libro de trabajo correspondiente. Si el método hasPOIFSHeader() en los dos primeros si no se cumplen las condiciones, se generará una excepción. Los dos if en el método hasPOIFSHeader () son para el juicio de Excel2003 y Excel2007. La información del encabezado del archivo (byte [8]) en la secuencia del archivo se lee para su juicio.

Entonces, dado que la información del encabezado se juzga en función de la comparación de archivos, y Excel solo tiene dos versiones, 2003 y 2007, entonces ¿por qué se juzga el encabezado del archivo cuando se lee la plantilla de Excel colocada debajo del classpath después de crear? el WorkBook? ¿Qué pasa con la falta de coincidencia?

Finalmente encontré la razón: cuando Maven compiló el paquete, los recursos en el archivo de recursos se transcodificaron. Finalmente, el paquete jar/war del proyecto web que archiva el archivo de plantilla de Excel está confuso y la información del encabezado se ha modificado, lo que hace que POI no pueda reconocer dichos archivos de Excel en absoluto.

Agregue el complemento de recursos maven en el pom.xml del proyecto.

1. Se recomienda usar WorkbookFactory.create(inputStream) en poi-ooxml para crear el libro de trabajo, porque ambos HSSFWorkbook y XSSFWorkbook implementan la interfaz Workbook. Interfaz del libro de trabajo. (Las dos versiones de Excel2003 y Excel2007 se adaptan aquí a través de encabezados de archivos)

2. En su proyecto, debe colocar algunos archivos de recursos estáticos como plantillas, como plantillas de relleno de Excel y plantillas de Word (dentro de allí). Hay algunos estilos fijos (use plantillas para exportar clases de informes cuando el programa se esté ejecutando). En este momento, la mejor configuración es eliminar los archivos de recursos en Maven sin transcodificar. Hay 2 métodos en el siguiente enlace.

Maven empaqueta y filtra archivos de recursos

/qing_mei_xiu/article/details/80661216