4 Stimmen

Die writeAll(ResultSet res,Boolean b) -Methode von OpenCSV fügt doppelte Anführungszeichen um die Daten hinzu.

Wenn ich diese Funktion verwende, um in eine CSV-Datei zu schreiben, sind alle Daten in doppelten Anführungszeichen eingebettet.

Gibt es einen Weg, um in eine CSV-Datei zu schreiben, ohne die doppelten Anführungszeichen?

CSVWriter writer = new CSVWriter(new FileWriter(table+".csv"), '\t');
            writer.writeAll(rset, true);
            writer.close();

Die Datei enthält Daten in folgender Form

"EMPNO" "ENAME" "JOB"   "MGR"   "HIREDATE"  "SAL"   "COMM"  "DEPTNO"    "TAG"   "LOOKUP"
"7369"  "SMITH" "CLERK" "7902"  "17-Dec-1980"   "800"   "2" "20"    "E" "1"
"7499"  "ALLEN" "SALESMAN"  "7698"  "20-Feb-1981"   "1600"  "2" "30"    "E" "2"
"7521"  "WARD"  "SALESMAN"  "7698"  "22-Feb-1981"   "1250"  "2" "30"    "E" "3"
"7566"  "JONES" "MANAGER"   "7839"  "02-Apr-1981"   "2975"  "2" "20"    "E" "2"

17voto

CSVWriter schriftsteller = new CSVWriter(new FileWriter(tabelle+".csv"), '\t', CSVWriter.NO_QUOTE_CHARACTER);
            schriftsteller.writeAll(rset, true);
            schriftsteller.close();

Referenz: opencsv CSVWriter JavaDoc

0voto

user1454926 Punkte 171

Ich würde gerne zur vorherigen Antwort hinzufügen (habe nicht genügend Punkte, um einfach Kommentare hinzuzufügen) von @user591593 - während Sie den Konstruktor NO_QUOTE_CHARACTER verwenden, sollten Sie die Werte selbst escapen. Siehe StringEscapeUtils

Darüber hinaus ist es am besten, eine geeignete Codierung anzugeben, wie z.B. UTF-8, anstatt anzunehmen, dass die Systemstandard korrekt ist:

CSVWriter writer = new CSVWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"), '\t', CSVWriter.NO_QUOTE_CHARACTER);

String s = "Einige lustige \t Zeichenfolge mit \" doppelten Anführungszeichen und \n neuen Zeilen";

writer.writeNext(StringEscapeUtils.escapeCsv(s));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X