2017-06-22 46 views
2

私はすべての要素を引用符で囲む必要があります。OpenCSV CSVWriterはヌル要素の引用符文字を追加しません

私はライン

CSVWriter writer = new CSVWriter(new FileWriter(rptFileName),`CSVWriter.DEFAULT_SEPARATOR, CSVWriter.DEFAULT_QUOTE_CHARACTER); 

要素が空の文字列であるライターにCSVWriterを使用していますが、それは引用符をラップし、それがnullの場合、そうではありません広告引用符文字を行います。

ですから、mu出力はこのようになります。

"ABC","","","DEF"

ここで第二の要素がnullで、第三の要素が空の文字列であるよう

"ABC",,"","DEF"

は、私はしたいです。

OpenCSVに手作業を介さずにこれを実現する方法はありますか?

答えて

0

CSVWriterを「自動」モードで実行することはできません。コード内のnull文字列に手動で空の""の値を割り当ててください。

//create writer with given config and output file 
CsvWriter writer = new CsvWriter(new File(rptFileName), "UTF-8", settings); 

//get your data from somewhere 
List<Object[]> dataToWrite = getDataFromSomewhere(); 

//write everything. 
writer.writeRowsAndClose(dataToWrite); 

あなたの場合:あなたは(行のまたはリスト)の行を記述している場合

//configure writer 
CsvWriterSettings settings = new CsvWriterSettings(); 
settings.setQuoteAllFields(true); 

:あなたは手動で各列を変更したくないので

0

、多分univocity-parsersにやってみますResultSetからデータをダンプしています。

ResultSet rs = getDataFromSomewhere(); 
new CsvRoutines(settings).write(rs, new File(rptFileName), "UTF-8"); 

これは、手動でyを変更せずに行います。私たちの入力。

開示:私はこのライブラリの作者だけど、それがnullで、何が何であるかCSVReaderが区別できるようCSVWriterが意図的にこのように設計されたノーオープンソースとフリー(Apache 2.0のライセンス)

0

です空の文字列後のバージョンではCSVReaderNullFieldIndicatorが追加されたため、ユーザーはnull(nullがあった場合)がCSVWriterに拡張されていないものを判断できました。したがって、openCSVを利用したい場合は、手動介入を行う必要があります。手動による介入が不可能な場合は

あなたは

String[] copyArray = ArrayUtils.clone(originalValues); 
for (int i = 0; i < copyArray.size; i++) { 
    copyArray[i] = StringUtils.defaultString(copyArray[i]); 
} 

// now use the CSVWriter to write the copyArray. 
をあなたを助けるためにはApache Commonsのライブラリを使用することができます
関連する問題