如何在C#中读取CSV文件,这不需要';在单列中没有值吗?

如何在C#中读取CSV文件,这不需要';在单列中没有值吗?,c#,asp.net,csv,excel-2010,C#,Asp.net,Csv,Excel 2010,我试图读取C代码中的CSV文件作为示例。此CSV文件有三列,其中一列在几行中没有值。因此,它被认为是C语言流读取器中的一种新的行反斜杠(\),当我在记事本++中打开文件时,它显示如下图像: 但在MS Excel中,如下图所示,该列上没有显示任何内容 在这里,Notepad++和MS Excel都以不同的方式显示数据。在Notepad++中,它显示“”而在Excel中,它显示空值。每当我们通过下面提到的C代码读取文件时,它采用Notepad++中所示的格式 读取CSV代码 受保护列表读取文件(

我试图读取C代码中的CSV文件作为示例。此CSV文件有三列,其中一列在几行中没有值。因此,它被认为是C语言流读取器中的一种新的行反斜杠(\),当我在记事本++中打开文件时,它显示如下图像:

但在MS Excel中,如下图所示,该列上没有显示任何内容

在这里,Notepad++和MS Excel都以不同的方式显示数据。在Notepad++中,它显示“”而在Excel中,它显示空值。每当我们通过下面提到的C代码读取文件时,它采用Notepad++中所示的格式

读取CSV代码

受保护列表读取文件(字符串文件路径)
{
列表内容=新列表();
使用(StreamReader csvReader=newstreamreader(filePath))
{
string line=string.Empty;
而((line=csvReader.ReadLine())!=null)
{
如果(line.Trim()长度>0)
{
if(line.Count(x=>x==',')>=1)
{
内容。添加(行);
}
}
}
}
返回内容;
}
目前它正在减少C#中的当前行,并在循环的第二次迭代中移动

请查看此屏幕截图:

1) 有完整的数据

2) 对于空白数据,行分为两部分。这是第1部分

3) 对于空白数据,行分为两部分。这是第2部分

期望O/P:应将其视为C代码中的一行。

如何在C代码中处理这种情况?

使用
提供逗号和换行符作为分隔符,并在保留空值的选项中不提供任何分隔符。

我认为此代码将对您有所帮助。您可以根据需要自定义它:

private static DataTable GetDataTabletFromCSVFile1(string csv_file_path1)
  {

   DataTable table2 = new DataTable("Real");

   try
   {
    using (TextFieldParser csvReader1 = new TextFieldParser(csv_file_path1))
    {
     csvReader1.SetDelimiters(new string[] { "," });
     csvReader1.HasFieldsEnclosedInQuotes = true;
     string[] colFields = csvReader1.ReadFields();

     foreach (string column in colFields)
     {
      DataColumn datecolumn2 = new DataColumn(column);
      datecolumn2.AllowDBNull = true;
      table2.Columns.Add(datecolumn2);
     }

     while (!csvReader1.EndOfData)
     {
      string[] fieldData1 = csvReader1.ReadFields();
      table2.Rows.Add(fieldData1);
     }
    }

    foreach (DataRow dr in table2.Rows)
    {
     foreach (DataColumn dc in table2.Columns)
     {
      if (string.IsNullOrEmpty(dr[dc.ColumnName].ToString()))
      {
       dr[dc.ColumnName] = DBNull.Value;
      }
     }
    }

   }
   catch (Exception ex)
   {
    MessageBox.Show("Select New File");
   }

   return table2;

  }

那么您期望的输出是什么呢?有正确编写的库可以读取CSV。请使用其中一个。这些库不能处理此问题scenario@er-mfahhgk请查看更新的问题和o/p@BenCSV文件来自第三方,我无法修改。它应该逐行读取。我可以知道我的意思是它失败的原因吗?
private static DataTable GetDataTabletFromCSVFile1(string csv_file_path1)
  {

   DataTable table2 = new DataTable("Real");

   try
   {
    using (TextFieldParser csvReader1 = new TextFieldParser(csv_file_path1))
    {
     csvReader1.SetDelimiters(new string[] { "," });
     csvReader1.HasFieldsEnclosedInQuotes = true;
     string[] colFields = csvReader1.ReadFields();

     foreach (string column in colFields)
     {
      DataColumn datecolumn2 = new DataColumn(column);
      datecolumn2.AllowDBNull = true;
      table2.Columns.Add(datecolumn2);
     }

     while (!csvReader1.EndOfData)
     {
      string[] fieldData1 = csvReader1.ReadFields();
      table2.Rows.Add(fieldData1);
     }
    }

    foreach (DataRow dr in table2.Rows)
    {
     foreach (DataColumn dc in table2.Columns)
     {
      if (string.IsNullOrEmpty(dr[dc.ColumnName].ToString()))
      {
       dr[dc.ColumnName] = DBNull.Value;
      }
     }
    }

   }
   catch (Exception ex)
   {
    MessageBox.Show("Select New File");
   }

   return table2;

  }