[简短地,我正在尝试将csv文件导入datatable。我正在添加像这样的列
DataTable data = new DataTable();
data.Columns.Add("ID", typeof(string));
data.Columns.Add("Name", typeof(string)).MaxLength = 150;
data.Columns.Add("Last name", typeof(string));
然后是:
using (var reader = new StreamReader(file.InputStream))
{
DataRow row;
var headers = reader.ReadLine();
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
string[] value = line.Split(',');
if (value.Length == data.Columns.Count)
{
row = data.NewRow();
row.SetField(0, ParseInt(value[0]));
row.SetField(1, value[1]);
row.SetField(2, value[2]);
//and so on
}
如果硬编码的标头与导入的文件相同,请提供一种有助于验证标头的方法?PS对长度的验证效果不好。有时,如果CSV中的最后一列为空,则不计算最后一列。
您难道不能在阅读第一行之后对标题进行拆分,然后循环查找标题的长度并使用相应的datatable列标题检查标题值吗?
如果文件中的标头较少,因为最后一列为空,那很好,因为您没有任何数据要添加到数据表的该列中,但是像这样进行检查应确保该行中的值数据文件将进入数据表中名称与标题匹配的列。