En este post te voy a enseñar cómo parsear, leer o interpretar un archivo CSV (archivo separado por comas) en C#, de modo que leas cada fila y después puedas acceder a cualquier columna.
Te voy a mostrar cómo leer un CSV de manera manual, sin usar librerías ni cosas de ese estilo. Todo será a mano leyendo el archivo línea por línea, separándolo y convirtiendo los valores.
Al final sabrás cómo leer un archivo separado por comas en C# usando Visual Studio o cualquier otro editor.
El archivo
Comencemos viendo el CSV que vamos a leer:
Descripción,Precio,Existencia
Pringles habanero,30.5,10
Cheetos 30 gr,15.20,5
Galletas,200,50
En este caso es un archivo de productos con descripción, precio y existencia. Básicamente un archivo separado por comas que tiene 3 columnas.
Por cierto, los CSV van separados por coma, pero si tú tienes un distinto separador este programa también funcionará, solo debes cambiar el carácter separador.
Abriendo archivo
Al final de cuentas, nuestro CSV es un archivo, así que lo vamos a leer como normalmente leemos un archivo con C#:
string ubicacionArchivo = "C:\\Users\\parzibyte\\Desktop\\productos.csv";
System.IO.StreamReader archivo = new System.IO.StreamReader(ubicacionArchivo);
Y después de eso lo vamos a leer línea por línea.
Separando línea
Ahora que ya tenemos la línea debemos separarla por comas, usando el delimitador definido anteriormente; para ello usamos Split
.
Recuerda que este código va a repetirse por cada línea en el archivo.
Nota: puedes cambiar la variable separador al separador que use el CSV, en este caso es una coma.
string[] fila = linea.Split(separador);
Ya tenemos nuestra línea como un arreglo, en donde los valores ya están separados. Ahora solo falta acceder a ellos. Recuerda el orden de las columnas pues esto es importante.
string descripcion = fila[0];
double precio = Convert.ToDouble(fila[1]);
double existencia = Convert.ToDouble(fila[2]);
Como puedes ver tenemos los 3 valores en un arreglo de C#, ahora accedemos a ellos. Al inicio todos son cadenas, pero como tenemos el precio y existencia debemos convertirlos a Double
.
Y de este modo es como leemos la fila del CSV con C sharp. Ahora ya puedes hacer cualquier otra cosa con estos valores.
Poniendo todo junto
El código completo queda como se ve a continuación. Recuerda leer los enlaces que te dejé en el post por si quieres profundizar en cómo leer el archivo o separar la línea.
using System;
namespace LeerArchivoDeTextoCSharp
{
class Program
{
static void Main(string[] args)
{
/*
https://parzibyte.me/blog
*/
string ubicacionArchivo = "C:\\Users\\parzibyte\\Desktop\\productos.csv";
System.IO.StreamReader archivo = new System.IO.StreamReader(ubicacionArchivo);
string separador = ",";
string linea;
// Si el archivo no tiene encabezado, elimina la siguiente línea
archivo.ReadLine(); // Leer la primera línea pero descartarla porque es el encabezado
while ((linea = archivo.ReadLine()) != null)
{
string[] fila = linea.Split(separador);
string descripcion = fila[0];
double precio = Convert.ToDouble(fila[1]);
double existencia = Convert.ToDouble(fila[2]);
Console.WriteLine("Producto {0} con precio {1} y existencia {2}", descripcion, precio, existencia);
}
}
}
}
He grabado un vídeo explicando todo este código:
Finalmente te dejo con más tutoriales de C# en mi blog.