JavaでApache Commons CSV 1.2を解析する37列のCSVファイルがあります。次のように私のセットアップコードは次のとおりです。ただしCSVの相違によるエラーの解析(Java with Apache Commons CSV)
Exception in thread "main" java.lang.IllegalArgumentException: Index for header 'Title' is 7 but CSVRecord only has 6 values!
at org.apache.commons.csv.CSVRecord.get(CSVRecord.java:110)
at launcher.QualysImport.createQualysRecords(Unknown Source)
at launcher.QualysImport.importQualysRecords(Unknown Source)
at launcher.Main.main(Unknown Source)
:
//initialize FileReader object
FileReader fileReader = new FileReader(file);
//intialize CSVFormat object
CSVFormat csvFileFormat = CSVFormat.DEFAULT.withHeader(FILE_HEADER_MAPPING);
//initialize CSVParser object
CSVParser csvFileParser = new CSVParser(fileReader, csvFileFormat);
//Get a list of CSV file records
List<CSVRecord> csvRecords = csvFileParser.getRecords();
// process accordingly
私の問題は、私は私のターゲットディレクトリに加工し、私の構文解析プログラムを実行するためにCSVをコピーするとき、私は次のエラーを取得するということですファイルを自分のターゲットディレクトリにコピーして開いて保存してから、もう一度プログラムを試してみてください。 CSVを開いて保存すると、最後に必要なコンマが追加されますので、私のプログラムは読み込みに十分なヘッダーがないことを補うことはできません。
状況については、ここで保存した後/前のサンプルラインです:
(失敗)の前に: "データ"、 "データ"、 "データ"、 "データ"
(作業)した後、 "データ"、 "データ"、 "データ"、 "データ" ,,,,,,
私は値やエンコーディングを変更していませんし、MS-DOSや標準の.csv形式で保存するときの動作は同じです。また、私はテストでコピー/オープン/保存するためにExcelを使用しています。
使用する必要があるエンコードまたはフォーマットの設定はありますか?これをプログラムで解決できますか?
ありがとうございます!
EDIT#1:追加のコンテキストについては
、私は最初、元のファイルに空の行を表示するとき、それはちょうどこのような新しい行^ Mの文字があります。
^M
した後にExcelで開いたり保存し、それは私の空のフィールドのすべての37で次のようになります。
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^M
これは、Windowsのエンコーディングの不一致ですか?
素晴らしい入力です。ありがとうございました。私はまた、RFC 4180がExcelが「不適合」のCSVファイルを保存する標準であることを読んだだけで、保存後にコンマが表示される理由です。私はプログラマチックに解決しなければならないので、私は自分の読者を実装するつもりです。 – corneria