4

この関数を使用してcsvファイルに書き込むと、すべてのデータが二重引用符で囲まれます。

二重引用符なしでcsvファイルに書き込む方法はありますか?

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

ファイルには次の形式のデータが含まれています

"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"
4

2 に答える 2

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

参照:opencsv CSVWriter JavaDoc

于 2011-07-27T08:55:24.507 に答える
0

@ user591593による前の回答(コメントに追加するだけの十分なポイントがありません)に追加したいと思います-NO_QUOTE_CHARACTERコンストラクターを使用している間は、値を自分でエスケープする必要があります。StringEscapeUtilsを参照してください

さらに、システムのデフォルトが正しいものであると想定するのではなく、UTF-8などの適切なエンコーディングを指定することをお勧めします。

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

String s = "some fun \t string with \" double quotes and \n new lines";

writer.writeNext(StringEscapeUtils.escapeCsv(s));
于 2015-03-31T06:56:39.267 に答える