Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En este tutorial para principiantes, vamos a ver cómoleer archivos CSV en unlista en C# utilizando elIronXL biblioteca. Bueno, esta es una de las cosas más básicas que necesitas saber en cualquier lenguaje de programación ya que los archivos CSV son una forma muy común de almacenar datos y transferirlos de un sistema o aplicación a otro. Cubriremos todos los aspectos, desde la configuración del proyecto hasta el análisis eficaz de archivos CSV.
Crear un proyecto de consola C# en Visual Studio.
Instale la biblioteca CSV de C# mediante el gestor de paquetes NuGet.
Cargue el archivo CSV utilizando el método WorkBook.LoadCSV
.
Leer los valores de los datos del archivo y rellenar la lista.
Abra Visual Studio: Inicie Visual Studio en su ordenador.
Crear un nuevo proyecto: Haga clic en "Crear un nuevo proyecto". Se abre una ventana en la que puede seleccionar el tipo de proyecto.
Seleccione el tipo de proyecto: Elija "Consola App(.NET Core)" como tipo de proyecto para simplificar.
Nombre de su proyecto: Nombra tu proyecto CSVFileReader.
Elegir ubicación: Selecciona una ubicación adecuada en tu dispositivo para guardar este proyecto.
Abra el Gestor de paquetes NuGet: En Visual Studio, vaya al menú "Herramientas", seleccione "Gestor de paquetes NuGet" y elija "Gestionar paquetes NuGet para solución...".
Busque IronXL: Haga clic en la pestaña "Examinar" y busque "IronXL.Excel".
Instalar IronXL: Encuentre el paquete IronXL en los resultados de búsqueda, selecciónelo y haga clic en "Instalar". Asegúrese de que acepta cualquier acuerdo de licencia y revise los cambios.
Compruebe la instalación: Después de la instalación, debería ver IronXL referenciado en las referencias de su proyecto.
Ahora, tu proyecto CSVFileReader está configurado con la librería IronXL, y estás listo para comenzar a leer y procesar archivos CSV en C#. Esta configuración constituye la base para las tareas de lectura de CSV que realizaremos en las secciones siguientes de este tutorial.
Con el proyecto configurado y la librería IronXL instalada, centrémonos en analizar y procesar archivos CSV. Trabajaremos dentro del archivo Program.cs
, que se genera automáticamente en tu proyecto CSVFileReader.
Antes de poder leer cualquier dato, necesitamos saber dónde se encuentra nuestro archivo CSV. Define una variable en el método Main
para almacenar la ruta del fichero.
string filename = "csvfile.csv"; // Replace with your actual file path
string filename = "csvfile.csv"; // Replace with your actual file path
Dim filename As String = "csvfile.csv" ' Replace with your actual file path
IronXL hace que sea sencillo cargar un archivo CSV. Utilice el método WorkBook.LoadCSV
para leer el archivo CSV en un objeto WorkBook
.
var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
Dim csv = WorkBook.LoadCSV(filename)
Cree una clase que represente la estructura de datos de su archivo CSV. Por ejemplo, si tu CSV contiene información sobre personas, define una clase Persona
como esta:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Public Class Person
Public Property Name() As String
Public Property Age() As Integer
End Class
En este paso, analizaremos el archivo CSV y rellenaremos una Lista<Person>
con los datos. Estamos utilizando IronXL para manejar la lectura CSV, y la clave es procesar correctamente cada fila o línea var del CSV, teniendo en cuenta las cabeceras y cualquier fila potencialmente vacía. Aquí tienes un desglose detallado del código:
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
if (isFirstRow)
{
isFirstRow = false; // Set the flag to false after skipping the first row
continue;
}
if (row.IsEmpty) continue; // Skip empty rows
var cells = row.ToArray();
var person = new Person()
{
Name = cells [0].StringValue,
Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
};
people.Add(person);
}
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
if (isFirstRow)
{
isFirstRow = false; // Set the flag to false after skipping the first row
continue;
}
if (row.IsEmpty) continue; // Skip empty rows
var cells = row.ToArray();
var person = new Person()
{
Name = cells [0].StringValue,
Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
};
people.Add(person);
}
Dim people As New List(Of Person)()
Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
For Each row In csv.WorkSheets (0).Rows
If isFirstRow Then
isFirstRow = False ' Set the flag to false after skipping the first row
Continue For
End If
If row.IsEmpty Then
Continue For ' Skip empty rows
End If
Dim cells = row.ToArray()
Dim person As New Person() With {
.Name = cells (0).StringValue,
.Age = Integer.Parse(cells (1).StringValue)
}
people.Add(person)
Next row
En este proceso de análisis sintáctico, primero inicializamos una Lista<Person>
para almacenar los datos analizados y utilizar un indicador booleano isFirstRow
para omitir la fila de cabecera del archivo CSV. El bucle foreach
recorre cada fila del archivo CSV. Durante la primera iteración, se identifica la fila de cabecera y se omite, lo que garantiza que sólo se procesen las filas de datos. A continuación, comprobamos cada fila para asegurarnos de que no está vacía utilizando row.IsEmpty
. Este paso es fundamental para evitar errores de análisis sintáctico con líneas vacías.
Para cada fila de datos, convertimos la fila en una matriz de celdas(row.ToArray()
) y luego crear un objeto Persona
con estos datos. Es crucial analizar y convertir correctamente los tipos de datos, como convertir la cadena "Edad" en un número entero. El objeto "Persona" analizado se añade a la lista "Personas". Este método garantiza que sólo se procesen y almacenen las filas de datos válidas, lo que evita posibles problemas como cadenas no numéricas en columnas numéricas o filas vacías inesperadas.
Después de analizar los datos CSV en nuestra Lista<Person>
, el siguiente paso importante es visualizar y verificar los datos. Esto no sólo ayuda a garantizar que nuestro análisis sintáctico se ha realizado correctamente, sino que también nos permite observar el resultado y realizar una rápida comprobación de la calidad de los datos. A continuación te explicamos cómo puedes ponerlo en práctica:
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
For Each person In people
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
Next person
Aquí está el código completo de Program.cs:
using IronXL;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string [] args)
{
string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
var csv = WorkBook.LoadCSV(filename);
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
if (isFirstRow)
{
isFirstRow = false; // Set the flag to false after skipping the first row
continue;
}
if (row.IsEmpty) continue; // Skip empty rows
var cells = row.ToArray();
var person = new Person()
{
Name = cells [0].StringValue,
Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
};
people.Add(person);
}
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
using IronXL;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string [] args)
{
string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
var csv = WorkBook.LoadCSV(filename);
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
if (isFirstRow)
{
isFirstRow = false; // Set the flag to false after skipping the first row
continue;
}
if (row.IsEmpty) continue; // Skip empty rows
var cells = row.ToArray();
var person = new Person()
{
Name = cells [0].StringValue,
Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
};
people.Add(person);
}
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
Imports IronXL
Public Class Person
Public Property Name() As String
Public Property Age() As Integer
End Class
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim filename As String = "C:\Users\tayya\Downloads\sample_data.csv" ' Replace with your actual file path
Dim csv = WorkBook.LoadCSV(filename)
Dim people As New List(Of Person)()
Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
For Each row In csv.WorkSheets (0).Rows
If isFirstRow Then
isFirstRow = False ' Set the flag to false after skipping the first row
Continue For
End If
If row.IsEmpty Then
Continue For ' Skip empty rows
End If
Dim cells = row.ToArray()
Dim person As New Person() With {
.Name = cells (0).StringValue,
.Age = Integer.Parse(cells (1).StringValue)
}
people.Add(person)
Next row
For Each person In people
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
Next person
End Sub
End Class
Al ejecutar el archivo, mostrará los datos de la lista en la consola:
Cuando se manejan varios tipos de datos en un archivo CSV, es importante adaptar la lógica de análisis al tipo específico de cada columna de datos. En el ejemplo de la clase Persona
, mientras que el Nombre
es una cadena y se puede asignar directamente utilizando StringValue
, los campos numéricos como Edad
requieren la conversión de cadena a entero utilizando Int32.Parse
o Convert.ToInt32
. Esto es esencial para evitar errores de incompatibilidad de tipos.
Para tipos de datos más complejos, como las fechas, utilice DateTime.Parse
para convertir representaciones de cadenas de fechas en objetos DateTime
. Es importante conocer el formato de fecha utilizado en el archivo CSV y asegurarse de que coincide con el formato esperado en el código. Los formatos de fecha incoherentes pueden dar lugar a errores de análisis o a una interpretación incorrecta de los datos.
Acaba de aprender a leer, analizar y mostrar los datos de un archivo CSV utilizando IronXL en C#. Este enfoque puede emplearse con distintos tipos de estructuras de datos y formatos de archivo. Por lo tanto, esto representa una habilidad útil en general para todos los desarrolladores por ahí llegando a C # como su principal lenguaje de elección.
IronXL ofrece unprueba gratuita para que los usuarios experimenten sus funciones. Una vez concluido el período de prueba, la licencia para IronXL comienza a un precio inicial de $749.
Hay que tener en cuenta las excepciones y los casos extremos para escribir un código más robusto, especialmente cuando se gestionan distintos tipos de datos y se utilizan archivos de gran tamaño. Siga experimentando y explorando más características de IronXL para mejorar el procesamiento de sus datos en C#. Feliz codificación!
9 productos API .NET para sus documentos de oficina