martedì 19 luglio 2011

Java ed Excel, problemi con carattere "a capo" nelle celle di testo

Per creare e leggere file Excel in Java spesso utilizzo Apache POI (http://poi.apache.org/ ).
Sono incappato più volte in un problema scrivendo excel con campi di testo con il carattere di “a capo”  \n , premetto che utilizzo la versione 3.2 (al momento siamo alla 3.8).
In fase di scrittura il testo va a capo correttamente ma compare sull’excel un fastidioso quadratino, simbolo di “carattere sconosciuto”.
Per risolvere il problema bisogna settare nello stile della cella la proprietà “setWrapText” a true.
Il carattere di “a capo” può anche essere reso da “\r” oltre che da “\n”, in questo caso, pur settando la proprietà setWrapText a true come consigliato continuo però ad avere il quadratino.
Quindi sono stato costretto a sostituire al carattere “\r” “\n” .
Mi sembra strano dover ricorrere a questa sostituzione manuale ma anche cercando su Internet ( ad esempio qui ) ho visto che è la soluzione consigliata.
Di seguito un codice di esempio:



HSSFWorkbook workbook = new HSSFWorkbook();
HSSFCellStyle style=workbook.createCellStyle();
style.setWrapText(true);
HSSFSheet firstSheet = workbook.createSheet("FIRST SHEET");
HSSFRow rowA = firstSheet.createRow(0);
HSSFCell cellA = rowA.createCell(0);
cellA.setCellStyle(style);
String testo="FIRST SHEET \n\n\n\r test";
cellA.setCellValue(new HSSFRichTextString(testo.replace('\r','\n')));
FileOutputStream fos=new FileOutputStream(new File("out/test.xls"));
workbook.write(fos);





Il risultato non cambia se aggiorno il mio workspace alla versione 3.7 , che è la ultima versione "stabile" del progetto, senza la replace di \r con \n continuo a vedere il quadratino...

Nessun commento:

Posta un commento