java google-app-engine servlets encoding jexcelapi

java - Problema de codificación en JExcel



google-app-engine servlets (3)

Estoy cargando un archivo de Excel en una aplicación GAE / Java con JExcel de esta manera:

El formulario html para subir el archivo es así:

<form id="" action="/save" method="post" enctype="multipart/form-data" accept-charset="ISO-8859-1"> <input name="file" type="file" value="load"/> <input type="submit"value="load excel"/> </form>

y en el servidor tengo:

ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iterator = upload.getItemIterator(request); while (iterator.hasNext()) { FileItemStream item = iterator.next(); InputStream stream = item.openStream(); if (!item.isFormField()) { //if it''s not a form field it''s a file Workbook workbook = Workbook.getWorkbook(stream); ... String name = sheet.getCell(COL_NUMBER, row).getContents(); } }

El problema es que si escribo en la celda algo así como '' ciudad ó '' cuando se lee en el servidor, ¿el nombre de la variable es '' ciudad '' ? ''. La codificación no está bien.

Intenté cambiar accept-charset = "ISO-8859-1" (configurándolo en utf-8 o quitándolo) pero sin éxito.

¿Alguien puede decirme cómo podría resolver este problema?

Gracias


OK, lo tengo haciendo esto:

WorkbookSettings ws = new WorkbookSettings(); ws.setEncoding("Cp1252"); Workbook workbook = Workbook.getWorkbook(stream, ws);


Primero, asegúrese de estar usando una versión reciente de POI (algo así como 3.7 o 3.8 beta 2). Las versiones muy antiguas de POI tenían problemas de codificación, pero siempre y cuando estés en una nueva, ese no debería ser tu problema.

A continuación, en su equipo local, ejecute algo como org.apache.poi.hssf.extractor.ExcelExtractor en el archivo. Esto le permitirá confirmar que POI maneja la codificación correctamente. Ejecutarlo con

java -classpath poi-3.8-beta2.jar org.apache.poi.hssf.extractor.ExcelExtractor --show-sheet-names Y -i MyExcel.xls

Suponiendo que funciona bien, entonces sabes que tu problema está dentro de Google App Engine.


WorkbookSettings buscará la propiedad del sistema jxl.encoding

Si no tiene fácil acceso a WorkbookSettings (es decir, proveniente de Drools-ExcelParser), puede encontrar esto preferible.