我正在尝试将csv文件导入我的数据库。该文件有10列。仅仅为了测试目的,我首先只导入了第4列,它工作正常但是当我尝试导入所有列时,我得到一个错误,说找不到第10列。
这是我的代码
`
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[10] { new DataColumn("Invoice", typeof(string)),
new DataColumn("P.O.Number", typeof(string)),
new DataColumn("Line", typeof(int)),
new DataColumn("Invoice_Date",typeof(DateTime)),
new DataColumn("Gross", typeof(string)),
new DataColumn("Disc", typeof(string)),
new DataColumn("NET", typeof(string)),
new DataColumn("Date_PD", typeof(string)),
new DataColumn("Check#_Doc#", typeof(string)),
new DataColumn("Additional_Info", typeof(string))});
string csvData = File.ReadAllText(csvPath);
foreach (string row in csvData.Split('\n'))
{
if (!string.IsNullOrEmpty(row))
{
dt.Rows.Add();
int i = 0;
foreach (string cell in row.Split(','))
{
dt.Rows[dt.Rows.Count - 1][i] = cell;
i++;
}
}
}`
答案 0 :(得分:0)
列的索引从0开始,到9而不是10。 您正在尝试添加不存在的列索引。
int i = 0;
foreach (string cell in row.Split(','))
{
if(i == 10)
throw new ArgumentOutOfRangeException(nameof(i));
dt.Rows[dt.Rows.Count - 1][i] = cell;
i++;
}
如果您的源中有额外的,
逗号,该异常将阻止将错误数据写入数据源。
我建议您投入时间将源转换为|
管道分隔文件,因为,
逗号可以在数据中常用。