Lors de la sortie EXCEL à l'aide du classeur SXSSF, Utilisez la version poi-3.17 ou ultérieure. c'est tout.
Ci-dessous, je le laisserai comme mémo lorsque je devrai absolument utiliser poi-3.16.
Lors de l'utilisation de SXSSFWorkbook, si vous définissez une chaîne de caractères avec un code de saut de ligne CRLF dans une cellule, un fichier EXCEL avec le double du nombre de sauts de ligne dans la cellule est généré. Lors de l'utilisation d'une version autre que la version d'économie de mémoire ci-dessus, les sauts de ligne CRLF ne doublent pas.
Lorsque vous utilisez SXSSFWorkbook, si le code de saut de ligne de la chaîne de caractères définie dans la cellule est CRLF, définissez-le sur CR uniquement ou sur LF uniquement avant de le transmettre.
Exemple non testé
SXSSFWorkbook wb = new SXSSFWorkbook();
// Abréviation
String setString = "1ère ligne \ r \ n2ème ligne";
Row row = sheet1.createRow(rowNum);
Cell cell = row.createCell(colNum);
cell.setCellValue(setString.replaceAll("\r\n", "\n"));
Vous pouvez trouver par Grep la source avec '\ r'. Scannez caractère par caractère avec le commutateur org.apache.poi.xssf.streaming.SheetDataWriter, Parce que '\ r' et '\ ne sont convertis respectivement en sauts de ligne. Prise en compte manquante de "\ r \ n".
Même poi-3.16 ne l'a pas résolu.
c'est tout.
Il semble avoir été corrigé dans la version 3.17. Merci à @ yuki-teraoka pour l'avoir signalé.
Bugzilla: Bug 61048 - Newlines in cells not rendering with SXSSF github: [Bug-61048] SXSSF module writes wrong escape sequence for carriage re…
Recommended Posts