Estoy trabajando en un proyecto y necesito leer un archivo CSV y luego llenar un DataSet con sus datos. He estado buscando y he encontrado algunas cosas interesantes en OleDB.Creando una DataTable desde el archivo CSV
Tengo un CSVReader clase:
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];
}
}
Y me llaman desde aquí:
CSVReader datareader = new CSVReader();
DataTable dt = datareader.GetDataTable(filepath);
El problema es que se analice la primera línea (la línea de cabecera) como apenas un identificador para la columna, quiero decir: Este es el encabezado del archivo CSV:
Name, Product Name, Server, Vendor, Start Time, End Time, Host Name, User Name, Project Name, Usage time (hours)
Y después de él, no todos los datos separado por comas.
Cuando leo el archivo, llene el conjunto de datos e imprima dt.Columns.Count que muestra que solo tiene 1 columna.
¿Algún ayuda?
Gracias de antemano.
posible duplicado de [Cómo leer un archivo csv en una tabla de datos .NET] (http: // stackoverflow.com/questions/1050112/how-to-read-a-csv-file-into-a-net-datatable) –
Mi solución es la misma que Jim Scott (http://stackoverflow.com/questions/1050112/ how-to-read-a-csv-file-into-a-net-datatable/1050278 # 1050278), pero no funciona: S –