優しくしてください。Apache Commons CSV 1.7 を使用するのはこれが初めてです。
いくつかの CSV 入力を処理し、外部ソースからいくつかの追加情報を追加してから、別のシステムに取り込むためにこの CSV を書き出すサービスを作成しています。
収集した情報を
HashMap<String, String>
、最終出力 csv の各行のリストに保存します。ハッシュマップには、<ColumnName, Value for column>
.
CSVPrinter を使用して HashMaps の値を行に正しく割り当てるのに問題があります。変数間にコンマを使用して、値を文字列に連結できます。ただし、これは文字列全体を最初の列に挿入するだけです。
ヘッダーは構成ファイルから取得され、サービスを使用するプロジェクトに応じて変更される可能性があるため、ヘッダーを定義またはハードコードすることはできません。
これが私のコードの一部です:
try (BufferedWriter writer = Files.newBufferedWriter(
Paths.get(OUTPUT + "/" + project + "/" + project + ".csv"));)
{
CSVPrinter csvPrinter = new CSVPrinter(writer,
CSVFormat.RFC4180.withFirstRecordAsHeader());
csvPrinter.printRecord(columnList);
for (HashMap<String, String> row : rowCollection)
{
//Need to map __record__ to column -> row.key, value -> row.value for whole map.
csvPrinter.printrecord(__record__);
}
csvPrinter.flush();
}
ご協力ありがとうございます。