【发布时间】:2023-03-11 13:55:01
【问题描述】:
我有一个csv_log_reader:
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)
{
MessageBox.Show(ex.Message);
}
return csvData;
对于第一个 csv 文件,我有 9 个标题。对于第二个 csv 文件,我有 10 个标题,但第 10 个标题为空。对于第二个文件,抛出异常:
输入数组长于该表的列数。
我希望第 10 个标头的值为 null。如何仅针对第 10 个标题执行此操作?
【问题讨论】: