Excel (私は 2013 バージョンをテストしました) は、エラーや警告なしで不正な形式の CSV ファイルを解析しているようです。
CSV ファイルを解析するための独自のライブラリを作成しました。テスト用のサンプル CSV ファイルを作成しました (セミコロンは区切り文字です):
TEST_STRING;Field1
"Band "Radiohead" in the City Hall";
CSV 形式の説明によると: https://www.rfc-editor.org/rfc/rfc4180#page-2 (#2.7) -- テスト ファイルの 2 行目 ("Band "Radiohead" in the City Hall") にエラーが含まれています。 ) 内側の二重引用符 ("Radiohead") は二重引用符でエスケープ (プレフィックス) されていないためです。
この場合、 lib とTextFieldParser クラスの両方で例外が発生します。私が使用した TextFieldParser のサンプルコード:
using (TextFieldParser parser = new TextFieldParser(@"d:\test_2.csv"))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(";");
int lineNumber = 0;
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
foreach (string field in fields)
{
//TODO: Process field
Console.WriteLine(field);
}
Console.WriteLine();
Console.WriteLine("line " + (++lineNumber) + ":");
}
}
例外は
しかし、Excel 2013 はテスト ファイルを開いて結果を表示します。
WindowsエクスプローラーでダブルクリックしてテストCSVファイルを開くか(Excelが.CSVのデフォルトプログラムである場合)、Excel 2013のウィザードを介してテストCSVファイルをインポートするか(リボン=>データ=>テキストから)。
Excel でこのような動作をする理由はありますか?