由于项目需要,所以写了这么个方法。
最初是使用odbc,将csv作为一个数据源读取,但后来发现效率差很多,而且读取的数据类型有问题
public static DataTable ReadCSVToTable(string filePath) {
DataTable dt = new DataTable();
if (filePath == string.Empty)
{
return dt;
}
using (StreamReader reader = new StreamReader(filePath, Encoding.Default))
{
DataColumn dc;
string[] headerLine = reader.ReadLine().Split(new char[] { ',' });
foreach (string column in headerLine)
{
dc = new DataColumn(column);
dt.Columns.Add(dc);
}
while (reader.Peek() >= 0)
{
DataRow row = dt.NewRow();
string line = reader.ReadLine();
string[] cellValues = line.Split(',');
for (int i = 0; i < cellValues.Length; i++)
{
if (string.IsNullOrEmpty(cellValues[i]))
{
row[i] = DBNull.Value;
continue;
}
row[i] = cellValues[i];
}
dt.Rows.Add(row);
}
}
return dt;
}