Wenn Sie EXCEL mit der SXSSF-Arbeitsmappe ausgeben, Verwenden Sie ver poi-3.17 oder höher. das ist alles.
Unten werde ich es als Memo hinterlassen, wenn ich unbedingt poi-3.16 verwenden muss.
Wenn Sie bei Verwendung von SXSSFWorkbook eine Zeichenfolge mit dem Zeilenvorschubcode CRLF in einer Zelle festlegen, wird eine EXCEL-Datei mit der doppelten Anzahl von Zeilenumbrüchen in der Zelle generiert. Wenn Sie eine andere Version als die oben genannte speichersparende Version verwenden, verdoppeln sich die CRLF-Zeilenumbrüche nicht.
Wenn bei Verwendung von SXSSFWorkbook der Zeilenvorschubcode des in der Zelle festgelegten Zeichenkettenzeichens CRLF lautet, setzen Sie ihn nur auf CR oder nur auf LF, bevor Sie ihn übergeben.
Ungetestetes Beispiel
SXSSFWorkbook wb = new SXSSFWorkbook();
// Abkürzung
String setString = "1. Zeile \ r \ n2nd Zeile";
Row row = sheet1.createRow(rowNum);
Cell cell = row.createCell(colNum);
cell.setCellValue(setString.replaceAll("\r\n", "\n"));
Sie können durch Grep die Quelle mit '\ r' herausfinden. Scannen Sie Zeichen für Zeichen mit dem Schalter org.apache.poi.xssf.streaming.SheetDataWriter, Weil '\ r'und' \ n'jeweils in Zeilenumbrüche konvertiert werden. Fehlende Berücksichtigung von "\ r \ n".
Sogar Poi-3.16 hat es nicht behoben.
das ist alles.
Es scheint in 3.17 behoben worden zu sein. Vielen Dank an @ yuki-teraoka für den Hinweis.
Bugzilla: Bug 61048 - Newlines in cells not rendering with SXSSF github: [Bug-61048] SXSSF module writes wrong escape sequence for carriage re…
Recommended Posts