Estoy desarrollando una solicitud de Java que lee un archivo de Excel y le escribe a un PDF con algún procesamiento entre ellos. Para leer la hoja de cálculo, estoy usando la excelente biblioteca de JEXCELAPI, y este es un extracto de código:

workbook = Workbook.getWorkbook(new File(fullName));

Sheet sheet = workbook.getSheet(0);

this.data.customer_name = sheet.getCell("B8").getContents();

Todo funciona como se esperaba, pero me di cuenta de que la salida es diferente en la máquina de producción que en el desarrollo. Tiene que ver con la codificación de personajes. Aquí hay un ejemplo del archivo de salida en ambas computadoras:

|-------------|-------------|
| Development | Production  |
|-------------|-------------|
| Söderkvist  | S��derkvist |
| Østnes      | ��stnes     |
| Müller      | M��ller     |
|-------------|-------------|

Las máquinas tienen Ubuntu 16.04 y 17.04 y, aunque no son exactamente idénticas, estoy usando el mismo JRE en ambos. He estado navegando por la documentación de JEXCELAPI y encontré una clase WorkbookSettings con un método para obtener / configurar la codificación de caracteres, pero no sé cómo obtener la codificación de archivo de origen XLS real. ¿Algunas ideas?

¡Gracias!

0
Fel 27 jun. 2019 a las 15:35

1 respuesta

La mejor respuesta

PROD es ASCII DEV es UTF-8

WorkbookSettings workbookSettings = new WorkbookSettings();
workbookSettings.setEncoding( "UTF-8" );
Workbook.getWorkbook( theFile, workbookSettings );
0
cj rogers 27 jun. 2019 a las 15:34