2015-02-23 77 views
0

简而言之,我使用Lumen CSV阅读器尝试将CS​​V数据读入我的程序。Lumen CSV阅读器无法读取第10列或之后

我遍历列行内做:

// open the file "data.csv" which is a CSV file with headers 
using (CsvReader csv = new CsvReader(new StreamReader(Path), true)) 
     { 

      string[] headers = csv.GetFieldHeaders(); 

      int RowCount = 1; 

      while (csv.ReadNextRecord()) 
      { 

       int TakenValsRowPosCount = 1; //Leave the first value at 0 for weird style 

       for (int i = 0; i < csv.FieldCount; i++) 
       { 

        if (HeaderstoInput.Contains(headers[i])) 
        { 

         if(!String.IsNullOrWhiteSpace(csv[i])) 
          InputVals[RowCount, TakenValsRowPosCount] = Convert.ToDouble(csv[i]); 

         TakenValsRowPosCount++; 

        } 

       } 

       RowCount++; 

      } 

     } 

出于某种原因,这项工作完全正常,直到我达到10这个值并在此之后的所有值都返回“”(在腕表)。即使那里有数据。

我已经尝试从CSV中删除列以将第十列左移,并阅读它,并工作。因此,数据本身似乎不是问题,只是第10列和更多列。

我已经尝试将读取器中的缓冲区大小更改为各种值。我似乎无法在别处找到任何有关此问题的参考。

+0

也许读者根本不支持那么多列?你是否检查过文档或代码? – 2015-02-23 11:37:32

+0

你好,我已经检查了我能找到的所有东西,并且找不到这个参考。 – NDC 2015-02-25 10:29:13

+0

你能发布你的整个相关代码吗?根据作者的代码项目网站(http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader),他在145个领域(你可以从源头获得)进行测试。 – sous2817 2015-02-25 15:56:09

回答

0

从快速浏览代码看来,它假定CSV文件具有固定数量的字段,并且这是从字段标题或从文件中读取的第一条记录计算得出的。

标题行有多少个字段?我怀疑那里可能只有10个。

+0

根据我的经验,具有比标题列更多的数据列导致索引超出范围例外。 – phoog 2015-07-08 06:26:50