C# 从组合csv文件创建数据表时出错
我有一个winform应用程序,它读取csv文件并将其转换为数据表。csv文件包含一列标题和多列实际数据。以下是创建数据表的函数:C# 从组合csv文件创建数据表时出错,c#,csv,datatable,C#,Csv,Datatable,我有一个winform应用程序,它读取csv文件并将其转换为数据表。csv文件包含一列标题和多列实际数据。以下是创建数据表的函数: public DataTable CreateDataTable(char delimiter) { DataTable dt = new DataTable(); FileStream aFile = new FileStream("filepath_to_csv", FileMode.Open); using (StreamReader
public DataTable CreateDataTable(char delimiter)
{
DataTable dt = new DataTable();
FileStream aFile = new FileStream("filepath_to_csv", FileMode.Open);
using (StreamReader sr = new StreamReader(aFile, System.Text.Encoding.Default))
{
//read headers...
string strLine = sr.ReadLine();
string[] strArray = strLine.Split(delimiter);
foreach (string value in strArray)
dt.Columns.Add(value.Trim());
DataRow dr = dt.NewRow();
//read data...
while (sr.Peek() > -1)
{
strLine = sr.ReadLine();
strArray = strLine.Split(delimiter);
dt.Rows.Add(strArray);
}
}
return dt;
}
这个很好用。现在我有一堆csv文件,需要合并成一个csv文件。因此,我创建了一个新的csv文件,并将第一个csv文件中的所有行复制到其中(标题行+数据行)。对于每个其他csv文件,我只是将数据行复制到新的csv文件中。当我尝试读取新文件时,会出现如下错误:列“column\u name”不包含在数据表中。
所有csv文件都具有相同的结构。当我分别读取每个csv文件时,效果很好。为什么会出现这些错误?对于每个新的CSV文件,您可能需要在数据表中添加更多列。因此,当您打开一个新的CSV时,您必须检查datatable中是否已经存在列,如果没有,则添加到datatable。您是指此处的行“和许多包含实际数据的列”?您需要将右字符串定位到新行的右列中,strArray需要与该行的列相同数量的值。