【问题标题】:Trying to read a csv file with embedded quotes using csvHelper尝试使用 csvHelper 读取带有嵌入引号的 csv 文件
【发布时间】:2020-09-15 01:07:01
【问题描述】:

下面是我必须阅读和解析的 CSV 的小 sn-p。我不知道它是如何创建的,据说它是一个有效的 CSV 文件。 使用 CSVHelper 它正在执行配置中的 BadDataExceptionHandler 设置

field1,field2,field3,field4
6/22/2020,7"X8.5"SIGNTYPE2.L,*299334,7"X8.5"SIGNTYPE2.L
7/30/2020,OMTOTE,GS350006,OMTOTE

如果我将原始文件提交给在线 CSV linter,它会抱怨 CSV 内容的结构不正确。

如果我在 Excel 中打开这个文件,它不会给我一个例外,并且电子表格看起来像上面的记录。但是如果我将文件保存为 *.csv,新文件的双引号会像这样转义。

  6/22/2020,"7""X8.5""SIGNTYPE2.L",*299334,"7""X8.5""SIGNTYPE2.L"

我尝试设置 Configuration.IgnoreQuotes = true,但这会引发“System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'”异常。

有没有办法使用 csvHelper 成功处理文件?

【问题讨论】:

  • 请分享minimal reproducible example。确保minimal reproducible example 包含您尝试在代码中解析的整个字符串,以便我们可以快速重现问题。
  • 鉴于文件不是有效的 CSV,您是否考虑过使用 Excel 来解析它?
  • @mjwills 我将使用可运行代码 sn-p 进行更新。我的示例 csv 只是字段的一个子集。让 Excel 进行解析不是我的选择。这些 CSV 文件可能是宽记录(许多字段)和数百万行。最终产品将需要处理内存。 Excel 或 closedXML 将读入整个文件。我需要一些可以枚举的东西,以免占用太多内存。

标签: c# csvhelper


【解决方案1】:

我已经使用 Microsoft Excel 保存并打开了数据,它运行良好 所以试试这个 安装 LumenWorksCsvReader

Install-Package LumenWorksCsvReader -Version 4.0.0

然后读取你的文件

           using (CsvReader csv = new CsvReader(new StreamReader(csvFile), true))
            {
                csv.DefaultParseErrorAction = ParseErrorAction.RaiseEvent;
                int fieldCount = csv.FieldCount;
                string[] lines = csv.GetFieldHeaders();

                while (csv.ReadNextRecord())
                {
                    List<string> rowData= new List<string>();
                    for (int i = 0; i < fieldCount; i++)
                    {
                        rowData.Add(csv[i]);
                    }
                }
             }

【讨论】:

  • 我刚刚将field1,field2,field3,field4 6/22/2020,7"X8.5"SIGNTYPE2.L,*299334,7"X8.5"SIGNTYPE2.L 7/30/2020,OMTOTE,GS350006,OMTOTE粘贴到notepad++中,将文件另存为.csv并用Excel打开
猜你喜欢
  • 2019-03-28
  • 2023-03-27
  • 2021-10-02
  • 2018-07-29
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
相关资源
最近更新 更多