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 行包含错误(市政厅的“乐队”无线电头) ) 因为内部双引号(“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中有这种行为的原因吗?