[JAVA] Solution au problème que les ruptures de ligne intra-cellulaires sont amplifiées lorsque EXCEL est généré à l'aide du classeur SXSSF (3.16 ou version antérieure)

Aperçu

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.

un événement

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.

Conclusion

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"));

Cause de l'échec

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.

PostScript 2019/3/19

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

Solution au problème que les ruptures de ligne intra-cellulaires sont amplifiées lorsque EXCEL est généré à l'aide du classeur SXSSF (3.16 ou version antérieure)
Comment résoudre l'erreur inconnue apparue lors de l'utilisation de slf4j en Java
Comment résoudre le problème que le bean n'est pas traité correctement lorsqu'il est imbriqué dans Spring Batch
Comment résoudre le problème lorsque la valeur n'est pas envoyée lorsque le formulaire est désactivé dans les rails et envoyé
[jOOQ] Comment utiliser CASE WHEN dans la clause WHERE / AND / OR
[Rails] Comment résoudre le problème d'écrasement de l'image par défaut lors de l'édition sans télécharger l'image [Active Storage]
Comment résoudre le problème selon lequel la notification ne peut pas être demandée sur iOS14
[Swift] Comment afficher les caractères saisis sur le Widget via UserDefaults lors de l'utilisation du WidgetKit
[Rails] Solution lorsque l'erreur "visite de la méthode non définie" "apparaît lors de l'utilisation de Capybara avec Rspec
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java