Wie zu analysieren UTF-8-Zeichen in Excel-Dateien mit POI
Ich habe mit OVI zu analysieren, XLS-und XLSX-Dateien erfolgreich. Allerdings bin ich nicht in der Lage korrekt zu extrahieren, spezielle Zeichen wie UTF-8-codierte Zeichen wie Chinesisch oder Japanisch, aus einer Excel-Tabelle. Ich habe herausgefunden, wie man Daten extrahieren aus einer UTF-8-kodierten csv-oder tab-getrennte Datei, aber kein Glück mit der Excel-Datei. Kann mir jemand helfen?
(Edit: Code-snippet aus Kommentare)
HSSFSheet sheet = workbook.getSheet(worksheet);
HSSFEvaluationWorkbook ewb = HSSFEvaluationWorkbook.create(workbook);
while (rowCtr <= lastRow && !rowBreakOut)
{
Row row = sheet.getRow(rowCtr);//rows.next();
for (int col=firstCell; col<lastCell && !breakOut; col++) {
Cell cell;
cell = row.getCell(col,Row.RETURN_BLANK_AS_NULL);
if (ctype == Cell.CELL_TYPE_STRING) {
sValue = cell.getStringCellValue();
log.warn("String value = "+sValue);
String encoded = URLEncoder.encode(sValue, "UTF-8");
log.warn("URL-encoded with UTF-8: " + encoded);
....
- Können Sie auf die Teile der POI API, die Sie verwenden, oder zeigen Sie uns etwas code? Das würde uns helfen um API-änderungen und oder Diagnostika, die helfen würde, zu Debuggen.
- Excel speichert keine Zeichen wie UTF-8, so dass ich denke, du bist wahrscheinlich verwirrt, irgendwo...
- Screenshot der Excel-Datei:
- Hier ist ein code-snippet:
HSSFSheet sheet = workbook.getSheet(worksheet); HSSFEvaluationWorkbook ewb = HSSFEvaluationWorkbook.create(workbook); while (rowCtr <= lastRow && !rowBreakOut) { Row row = sheet.getRow(rowCtr);//rows.next(); for (int col=firstCell; col<lastCell && !breakOut; col++) { Cell cell; cell = row.getCell(col,Row.RETURN_BLANK_AS_NULL); if (ctype == Cell.CELL_TYPE_STRING) { sValue = cell.getStringCellValue(); log.warn("String value = "+sValue); String encoded = URLEncoder.encode(sValue, "UTF-8"); log.warn("URL-encoded with UTF-8: " + encoded);
- alle log-Einträge zurückzukehren, junk-E -, - ie - nicht-chinesische Zeichen
- Ich konnte nicht herausfinden, wie Hänge ich einen Screenshot oder excel-Datei mit chinesischen Zeichen gespeichert, in eine Excel-Datei, so dass Sie nur gehen zu müssen, nehmen Sie mein Wort, dass es möglich ist, zu speichern, chinesische Zeichen in eine excel-Datei.
- Herzlich willkommen auf stackoverflow 🙂 Es ist ein wenig schwer zu Lesen, dass viel code in den Kommentaren, so zog ich den code-snippet in die Frage, für bessere Lesbarkeit. FYI: Sie können immer aktualisieren Sie Ihre eigenen Fragen, um mehr Informationen. Ich denke, die option ist verfügbar für alle Benutzer Ebenen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem beim extrahieren Persischen text aus einer Excel-Datei. Ich war mit Eclipse und gehen Sie einfach zu Projekt -> Eigenschaften und ändern Sie die "text file encoding" auf UTF-8 das problem gelöst.
in POI können Sie verwenden, wie diese:
und kann mit einem anderen Zeichensatz in FontCharset
Bekommen bytes mit UTF-wie folgt
Die Lösung ist einfach, zu Lesen, cell string-Werte der Codierung (non-englischer Zeichen); verwenden Sie einfach die folgende Methode:
statt:
Dies gilt für die UTF-8-codierte Zeichen wie Chinesisch, Arabisch oder Japanisch.
P. S wenn jemand mit dem Befehlszeilen-Dienstprogramm, das nullpunkt - /excel-json -, die nutzen die "Apache POI" - Bibliothek, die Datei ändern converter/ExcelToJsonConverter.java durch das ersetzen der vorkommen von "getStringCellValue()" zu Lesen zu vermeiden, nicht-englische Zeichen wie "???".