0

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 でこのような動作をする理由はありますか?

4

0 に答える 0