Sto lavorando a un progetto e ho bisogno di leggere un file CSV e quindi riempire un DataSet con i suoi dati. Ho cercato e ho trovato alcune cose interessanti in OleDB.Creazione di un DataTable dal file CSV
Ho una classe 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];
}
}
E mi chiamano da qui:
CSVReader datareader = new CSVReader();
DataTable dt = datareader.GetDataTable(filepath);
Il problema è che analizzare la prima riga (riga di intestazione) come solo un identificatore per la colonna, voglio dire: Questa è l'intestazione del file CSV:
Name, Product Name, Server, Vendor, Start Time, End Time, Host Name, User Name, Project Name, Usage time (hours)
E dopo, c'è tutti i dati separati da virgole.
Quando ho letto il file, riempi il set di dati e stampo dt.Columns.Count mostra che ha solo 1 colonna.
Qualsiasi aiuto?
Grazie in anticipo.
possibile duplicato di [Come leggere un file CSV in un .net datatable] (http: // stackoverflow.com/questions/1050112/how-to-read-a-csv-file-into-a-net-datatable) –
La mia soluzione è la stessa di Jim Scott (http://stackoverflow.com/questions/1050112/ how-to-read-a-csv-file-in-a-net-datatable/1050278 # 1050278), ma non funziona: S –