在 Asp.Net 中读取 CSV 文件时解析列名
Resolving column names while reading CSV file in Asp.Net
我正在将 CSV
读成 DataTable
。每当 csv
中没有给出列名时,它就会以 F1、F2、F3 的形式出现......我已经处理过了并且应用程序 运行 很好,直到客户给我另一个 csv
相同的格式,但失败了。我为客户的 csv
调试了我的应用程序,发现未命名的列与 .NoName,.NoName1,.NoName2......
一样
如何使列对于两个文件都是唯一的。
我已阅读如下文件
public static DataTable ImportCsvFile(string filename)
{
DataTable dtExcelData = new DataTable();
FileInfo file = new FileInfo(filename);
using (OleDbConnection con =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" +
file.DirectoryName + "\";Extended Properties='text;HDR=Yes;FMT=Delimited(,)';"))
{
using (OleDbCommand cmd = new OleDbCommand(string.Format
("SELECT * FROM [{0}]", file.Name), con))
{
con.Open();
using (OleDbDataAdapter adp = new OleDbDataAdapter(cmd))
{
adp.Fill(dtExcelData);
}
}
}
return dtExcelData;
}
谢谢
由于列名可能会更改,您可以将它们重命名为始终为 F1、F2、... Fn。在返回数据表之前将此代码添加到方法中:
for (int i = 0; i < dtExcelData.Columns.Count; i++)
{
dtExcelData.Columns[i].ColumnName = "F" + i.ToString();
}
我正在将 CSV
读成 DataTable
。每当 csv
中没有给出列名时,它就会以 F1、F2、F3 的形式出现......我已经处理过了并且应用程序 运行 很好,直到客户给我另一个 csv
相同的格式,但失败了。我为客户的 csv
调试了我的应用程序,发现未命名的列与 .NoName,.NoName1,.NoName2......
如何使列对于两个文件都是唯一的。
我已阅读如下文件
public static DataTable ImportCsvFile(string filename)
{
DataTable dtExcelData = new DataTable();
FileInfo file = new FileInfo(filename);
using (OleDbConnection con =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" +
file.DirectoryName + "\";Extended Properties='text;HDR=Yes;FMT=Delimited(,)';"))
{
using (OleDbCommand cmd = new OleDbCommand(string.Format
("SELECT * FROM [{0}]", file.Name), con))
{
con.Open();
using (OleDbDataAdapter adp = new OleDbDataAdapter(cmd))
{
adp.Fill(dtExcelData);
}
}
}
return dtExcelData;
}
谢谢
由于列名可能会更改,您可以将它们重命名为始终为 F1、F2、... Fn。在返回数据表之前将此代码添加到方法中:
for (int i = 0; i < dtExcelData.Columns.Count; i++)
{
dtExcelData.Columns[i].ColumnName = "F" + i.ToString();
}