Verhindern opencsv aus dem schreiben zitiert .csv-Datei
Ich bin das füllen einer Datei aus einer Ergebnismenge etwa so :
while(rs.next()){
String[] entries = new String[3];
entries[0] = rs.getString(1);
entries[1] = ",";
entries[2] = rs.getString(2);
println("entries : "+entries);
writer.writeNext(entries);
}
Wenn ich öffnen Sie die excel-Datei, die die Werte enthalten, die Anführungszeichen um Sie herum. So test1", "test2", "test3", wenn aus der Datenbank gelesen und geschrieben .csv-Datei wird zu "test1","test2","test3"
Wie schreib ich den text in eine Datei, aber nicht die Anführungszeichen ?
Wenn ich drucken Sie die Einträge auf der Konsole-die Anführungszeichen sind nicht gedruckt, also ich weiß nicht, wo Sie Hinzugefügt werden ?
InformationsquelleAutor blue-sky | 2013-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
Constructor
wie erwähnt von @Matten und zusammen mit, dass, mit der anderen writeAll() vonCSVWriter
.OpenCSV unterstützt auch die dump-Daten aus SQL-Tabelle direkt in CSV. Dafür brauchen wir ResultSet-Objekt. Folgende API kann verwendet werden, um das schreiben von Daten in CSV-von ResultSet.
Den
writeAll(ResultSet, boolean)
Methode wird verwendet, für diese. Das erste argument ist dieResultSet
die Sie möchten, schreiben CSV - Datei. Und das zweite argument istboolean
welche darstellt, ob Sie schreiben wollen, header-Spalten (Tabelle Spaltennamen) in die Datei oder nicht.InformationsquelleAutor SudoRahul
Einfach zu erweitern auf Matten, die Antwort, verwenden Sie den built-in-Zeichen in der CSVWriter angeben, die
quotechar
. Also dein writer würde wie folgt Aussehen:NO_QUOTE_CHARACTER
es funktioniert noch zitieren, wenn es nötig ist? Wenn ich verstehe, CSV korrekt ist, die Anführungszeichen sind nur erforderlich, wenn Zeilenumbrüche, Kommata etc vorhanden sind, die in der Zeichenfolge. Allerdings OpenCSV immer fügt Zitate, so dass es nicht kompatibel ist und unbrauchbar. Tut dies zu lösen?Diese Methode sollte funktionieren, wenn es das Ende der Zeile:
public CSVWriter(Writer writer,char separator,char quotechar,String lineEnd)
. Weitere Informationen finden Sie (hier)[opencsv.sourceforge.net/apidocs/au/com/bytecode/opencsv/.... Ich war nur hervorheben, dass man mit den (Konstanten-Feld-Werte)[opencsv.sourceforge.net/apidocs/...Vielen Dank!
sehr gut, Danke sehr viel
InformationsquelleAutor obsessiveCookie
TL;DR Sie es nicht mit OpenCSV v2.3. Aber Sie können mit Commons CSV.
OpenCSV (v2.3) nicht scheinen, um eine sichere Art und Weise ausschalten Zitate, wenn Sie nicht erforderlich sind. Zitate sind in der Regel nicht erforderlich, für Werte, die nicht die Trennzeichen oder Zeilenende-Zeichen in Ihnen.
Mit
NO_QUOTE_CHARACTER
wie es manche vorgeschlagen haben:produziert die falsche CSV-Darstellung als:
Mehr gültige Darstellung dieser Daten, die verwendet Zitate nur, wenn es erforderlich wäre:
Habe ich nicht verwendet Commons CSV, aber es scheint zu bieten, diese Fähigkeit über
QuoteMode.MINIMAL
die das folgende tut:Der code in meiner Antwort im Zusammenhang zu OpenCSV, um zu zeigen, wie es nicht die Funktion erforderlich.
InformationsquelleAutor vegemite4me
Ja. Es ist ein CSVWriter in demselben Paket, das folgt der gleichen Semantik wie der CSVReader. Zum Beispiel, schreiben Sie eine tab-getrennte Datei:
Wenn Sie es vorziehen, verwenden Sie Ihre eigene Zitat-Zeichen, können Sie die drei arg-version des Konstruktors, die einen Anführungszeichen (oder fühlen Sie sich frei, pass in CSVWriter.NO_QUOTE_CHARACTER).
Können Sie auch anpassen, die Zeilenende-Zeichen verwendet, in der erzeugten Datei (das ist praktisch, wenn Sie beim exportieren von Ihrem Linux-web-Anwendung für Windows-clients). Es ist ein argument im Konstruktor für diesen Zweck.
InformationsquelleAutor Sahil Sancheti
Den Konstruktor-code der Schriftsteller können Sie ein escape-Zeichen (
quotechar
):Wenn diese falsch ist, es ist ein weiterer Konstruktor mit dem escape-Zeichen 🙂
InformationsquelleAutor Matten
sehen diese link auf wie zu verwenden NO_QUOTE_CHARACTER Konstruktor und die richtige Codierung beim schreiben in eine Datei:
https://stackoverflow.com/a/29362439/1454926
InformationsquelleAutor user1454926