Я работаю над проектом, и мне нужно прочитать файл CSV, а затем заполнить DataSet его данными.Я искал и нашел некоторые интересные вещи в OleDB.
У меня есть класс CSVReader:
class CSVReader
{
public DataTable GetDataTable(string filePath)
{
OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + Path.GetDirectoryName(filePath) + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"");
conn.Open();
string strQuery = "SELECT * FROM [" + Path.GetFileName(filePath) + "]";
OleDbDataAdapter adapter = new OleDbDataAdapter(strQuery, conn);
DataSet ds = new System.Data.DataSet("CSV File");
adapter.Fill(ds);
return ds.Tables[0];
}
}
И я вызываю его отсюда:
CSVReader datareader = new CSVReader();
DataTable dt = datareader.GetDataTable(filepath);
Проблема в том, что он анализирует первую строку (строку заголовка) как и просто идентификатор для столбца, я имею в виду: это заголовок файла CSV:
Name, Product Name, Server, Vendor, Start Time, End Time, Host Name, User Name, Project Name, Usage time (hours)
И после него все данные разделены запятыми.
Когда я читаю файл, заполняю набор данных и печатаю dt.Columns.Count , это показывает, что он имеет только 1 столбец.
Любая помощь?
Заранее спасибо.