我需要导入CSV文件然后上传到Datatable。然后我需要验证列以满足要求并确保最终用户导入格式正确。在CSV文件中必须有3列即项目,价格和措施。
当我尝试将列名称与字符串进行比较时,错误就开始了,这里是代码片段。
private bool verifyColumn(DataTable dt)
{
/* Column
* 1) items
* 2) price
* 3) measure
*/
foreach (DataColumn col in dt.Columns)
{
if (col.ColumnName.ToString() == "price")
{
continue;
}
else if (col.ColumnName.ToString() == "item")
{
continue;
}
else if (col.ColumnName.ToString() == "measure")
{
continue;
}
else
{
return false;
}
}
return true;
}
当调试模式时,第一个循环显示'item'但不能捕获if语句。我怎么能解决这个问题?
使用A Portable and Efficient Generic Parser for Flat Files将CSV文件导入数据表的代码。
GenericParserAdapter paste = new GenericParserAdapter(fileName);
paste.FirstRowHasHeader = true;
paste.ColumnDelimiter = ';';
DataTable dt dt = paste.GetDataTable();
if (dt.Columns.Count != 3)
{
MessageBox.Show(errorMessage, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
dt.Clear();
return;
}
// Here to do verify columт
答案 0 :(得分:0)
在我看来,第一列是“项目”,但您按“项目”进行过滤。
P / S:你应该创建一个变量来保存col.ColumnName.ToString()值。 (鉴于ColumnName不是字符串,这有点奇怪)