【发布时间】:2016-10-30 00:35:12
【问题描述】:
我正在使用以下代码读取 csv 文件并存储到 C#。但我的要求是,我想跳过csv 文件中的第一行,因为它不是结构化的,因此将第二行作为列。如何在现有代码中执行此操作。
private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
{
DataTable csvData = new DataTable();
try
{
using(TextFieldParser csvReader = new TextFieldParser(csv_file_path))
{
csvReader.SetDelimiters(new string[] { ";" });
csvReader.HasFieldsEnclosedInQuotes = true;
string[] colFields = csvReader.ReadFields();
foreach (string column in colFields)
{
DataColumn datecolumn = new DataColumn(column);
datecolumn.AllowDBNull = true;
csvData.Columns.Add(datecolumn);
}
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
//Making empty value as null
for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
csvData.Rows.Add(fieldData);
}
}
}
catch (Exception ex)
{
}
return csvData;
}
我的 CSV 文件看起来像
a;;{b;g;t{}
firstname;lastname;age;locaion
peter;vela;28;denver
sasi;kiran;38;colorado
sastri;miro;texas
【问题讨论】:
-
用您的示例数据尝试了我的答案,它可以工作。但是请注意,您使用逗号作为字段分隔符,而文件在字段之间有分号
标签: c# asp.net .net csv datatable