2012-03-14 15 views
6

Estoy cargando un archivo Excel desde el navegador. Estoy usando un tarro de POI Pero obteniendo el error Firma del encabezado no válida; leo 3255307777713450285, esperaba -2226271756974174256Error de lectura de Excel: firma de encabezado no válida. ¿Cómo resolver?

por debajo de los dos archivos JSP que he utilizado: JSP 1:

<form action="Upload.jsp" enctype="MULTIPART/FORM-DATA" method=post > 
    <input type="file" name="filename" /> 
    <input type="submit" value="Upload" /> 
</form> 

JSP 2: Upload.jsp

try{ 
     InputStream file = request.getInputStream(); 
     POIFSFileSystem myFileSystem = new POIFSFileSystem(file); 
     HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); 
     HSSFSheet mySheet = myWorkBook.getSheetAt(0); 
     Iterator rowIter = mySheet.rowIterator(); 
     rowIter.next(); 
     while (rowIter.hasNext()) { 
      HSSFRow myRow = (HSSFRow) rowIter.next(); 
      Iterator cellIter = myRow.cellIterator(); 
      cellIter.next(); 
      System.out.println(((HSSFCell)cellIter.next()).toString()); 
     } 


    }catch(Exception ex){ 
     System.out.println(ex.getMessage()); 
    } 

Pero conseguir el error en la línea POIFSFileSystem myFileSystem = new POIFSFileSystem (archivo);

¿Cómo solucionar este problema?

+0

¿Seguro de que obtener el archivo deseado con archivo 'InputStream = request.getInputStream();'. No lo creo. Intente usar un FileStream y obtenga el archivo usando el ID del JSP –

+0

¿cuál es la excepción planteada? 'NullPointerException',' IOException'? –

+0

@Luiggi Mendoza Firma de encabezado inválida; lea 3255307777713450285, esperado -2226271756974174256 Se hizo esta excepción. –

Respuesta

9

Obtiene este error porque su archivo no es en realidad un archivo .xls de Excel, es algo más.

Le sugiero que intente abrir el archivo en el Bloc de notas y verlo allí. Casi todos los errores de este tipo terminan siendo que un archivo .csv o .html ha sido renombrado a .xls. Excel cargará felizmente archivos html (representando la tabla como la hoja de cálculo) y archivos csv, y no le advierte que tiene una extensión incorrecta sobre ellos.

Tenga en cuenta que si cambia el nombre de un archivo .xlsx a .xls y lo pasa a POIFSFileSystem o HSSFWorkbook de POI, obtendrá un error más específico advirtiéndole que tiene un archivo .xlsx en su lugar. Solo obtiene este error porque POI no tiene absolutamente ninguna idea de cuál es su archivo, solo que no es un .xls

0

Solo una idea, si utiliza maven, asegúrese de que en el filtro de la etiqueta de recurso se establece en "falso ". De lo contrario experto tiende a archivos xls corruptos en la fase de copia

en su pom.xml

Cuestiones relacionadas