Red de conocimiento informático - Aprendizaje de programación - Código fuente de paquetes Maven

Código fuente de paquetes Maven

Recientemente, cuando usé Apache poi para exportar Excel, encontré los siguientes problemas:

Al principio, en comparación con otros proyectos web, no encontré una solución. Finalmente, busque el código fuente que causó la excepción:

org . Apache poi .modelo de usuario crear(workbook factory. Java:75)

. Vea que WorkbookFactory se llama hora. Crear (InputStream) crea un libro de trabajo, que diferenciará y creará el objeto de libro de trabajo apropiado según el tipo de archivo (encabezado de archivo). Si no se cumplen las dos primeras condiciones del método hasPOIFSHeader(), se generará una excepción. El método hasPOIFSHeader () en los dos if es para juzgar Excel2003 y Excel2007. Lee la información del encabezado del archivo (byte [8]) en la secuencia del archivo para juzgar.

Entonces, dado que se juzga comparando la información del encabezado del archivo, y solo hay dos versiones de Excel, 2003 y 2007, ¿por qué sucede al leer la plantilla de Excel colocada debajo del classpath y crearla? como libro de trabajo, ¿qué pasa si el encabezado del archivo no coincide?

Finalmente se encontró el motivo: Maven transcodificó los archivos de recursos en recursos al compilar y empaquetar. En el paquete jar/war final impreso por el proyecto web, los archivos de plantilla de Excel archivados en él estaban todos confusos y la información del encabezado del archivo se modificó, lo que provocó que POI no pudiera reconocer dichos archivos de Excel en absoluto.

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

1. Se recomienda utilizar la fábrica de libros. Cree (InputStream) en poi-ooxml para crear el libro de trabajo, porque tanto HSSFWorkbook como XSSFWorkbook implementan la interfaz del libro de trabajo. (Excel2003 y Excel2007 se adaptan aquí a través del encabezado del archivo).

2. En su proyecto, debe colocar algunos archivos de recursos estáticos como plantillas, como plantillas para completar formularios de Excel y plantillas de Word (hay algunas). estilo fijo, la clase de informe se exporta a través de la plantilla cuando el programa se está ejecutando). En este momento, es mejor configurar maven para eliminar archivos de recursos sin transcodificar. Hay dos métodos de enlace a continuación.

Maven empaqueta y filtra archivos de recursos

/Qing_mei_xiu/article/details/80661216