Saltar al pie de página
USANDO IRONXL

Leer archivo CSV usando C# (Tutorial con ejemplo de código)

Este tutorial demuestra cómo leer un archivo CSV usando la biblioteca IronXL C# sin instalar interop adicional, de una manera altamente eficiente y efectiva.

Cómo leer archivos CSV en C

Primero debes instalar IronXL antes de usarlo para leer archivos CSV en MVC, ASP.NET o .NET Core. Aquí hay un resumen básico del proceso.

Selecciona el menú Proyecto en Visual Studio, Administrar paquetes NuGet, busca IronXL.Excel e instala.

Leer archivo CSV usando C# (Ejemplo de código tutorial), Figura 1: Instalar el paquete IronXL en el Administrador de Paquetes NuGet Instalar el paquete IronXL en el Administrador de Paquetes NuGet

IronXL es una gran herramienta para usar cuando necesitas leer archivos CSV en C#. El siguiente ejemplo de código muestra que puedes leer un archivo CSV usando comas u otro delimitador.

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx");
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx");
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("Weather.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Save the workbook as an Excel file
workbook.SaveAs("Csv_To_Excel.xlsx")
$vbLabelText   $csharpLabel

Leer archivo CSV usando C# (Ejemplo de código tutorial), Figura 2: Datos CSV para este tutorial Datos CSV para este tutorial

Se crea el objeto WorkBook. Luego se usa el método LoadCSV del objeto WorkBook para indicar el nombre del archivo CSV, su formato y los delimitadores usados en el archivo CSV que se lee, los cuales se almacenan como una matriz de cadenas. Las comas se utilizan como delimitadores en este escenario.

Después de eso, se crea un objeto WorkSheet; aquí es donde se almacenarán los contenidos del archivo CSV. Luego el archivo se renombra y almacena en un nuevo formato. Los datos del archivo CSV se organizan en la hoja de trabajo en forma tabular. La salida se verá algo así:

Leer archivo CSV usando C# (Ejemplo de código tutorial), Figura 3: Datos convertidos en archivo Excel Datos convertidos en archivo Excel

Análisis de CSV en C# .NET

Los archivos CSV tienen varios problemas con la forma en que se manejan los saltos de línea en los campos, y cómo los campos pueden estar encerrados entre comillas, lo que impide que una simple técnica de división de cadenas funcione Split("'"). En su lugar, IronXL ofrece personalizar el delimitador usando un parámetro opcional del método LoadCSV, consulta la documentación de la API de LoadCSV para más detalles.

Registros de C#: lectura de datos CSV

En el siguiente ejemplo, se utiliza el bucle foreach para iterar sobre las filas en el archivo CSV, y se utiliza la Consola para escribir los datos en un registro.

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Convert the worksheet data into a DataTable
DataTable dt = ws.ToDataTable(true); // The argument true indicates the first row is header

// Iterate through each row in the DataTable
foreach (DataRow row in dt.Rows)
{
    // Iterate through each column in the current row
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Output each cell value to the console
        Console.Write(row[i] + "  ");
    }
    // New line after each row
    Console.WriteLine();
}
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("Weather.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Convert the worksheet data into a DataTable
DataTable dt = ws.ToDataTable(true); // The argument true indicates the first row is header

// Iterate through each row in the DataTable
foreach (DataRow row in dt.Rows)
{
    // Iterate through each column in the current row
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Output each cell value to the console
        Console.Write(row[i] + "  ");
    }
    // New line after each row
    Console.WriteLine();
}
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("Weather.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Convert the worksheet data into a DataTable
Dim dt As DataTable = ws.ToDataTable(True) ' The argument true indicates the first row is header

' Iterate through each row in the DataTable
For Each row As DataRow In dt.Rows
	' Iterate through each column in the current row
	For i As Integer = 0 To dt.Columns.Count - 1
		' Output each cell value to the console
		Console.Write(row(i) & "  ")
	Next i
	' New line after each row
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

Leer archivo CSV usando C# (Ejemplo de código tutorial), Figura 4: Accediendo a datos del archivo CSV y mostrando en la Consola Accediendo a datos del archivo CSV y mostrando en la Consola

Convertir una línea de cadena de un archivo CSV al formato Excel

El procedimiento es sencillo: cargar un archivo CSV y guardarlo como un archivo Excel.

// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load a CSV file into a WorkBook object specifying file format and delimiters
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");

// Get the default worksheet from the workbook
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
' Load a CSV file into a WorkBook object specifying file format and delimiters
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")

' Get the default worksheet from the workbook
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")
$vbLabelText   $csharpLabel

Leer y manipular archivos CSV convertidos con IronXL

La clase WorkBook de IronXL representa una hoja de Excel y esta clase se usa para abrir un archivo Excel en C#. Los ejemplos de código a continuación cargarán el archivo Excel deseado en un objeto WorkBook:

// Load WorkBook from a .xlsx file
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
// Load WorkBook from a .xlsx file
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
' Load WorkBook from a .xlsx file
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
$vbLabelText   $csharpLabel

Se pueden encontrar objetos WorkSheet en numerosos WorkBooks. Si la hoja tiene hojas de trabajo, use WorkBook y GetWorkSheet. Si el libro de trabajo tiene hojas de trabajo, puedes obtenerlas por nombre haciendo lo siguiente:

// Open a specific worksheet for reading by its name
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open a specific worksheet for reading by its name
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
' Open a specific worksheet for reading by its name
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
$vbLabelText   $csharpLabel

Código para leer los valores de las celdas:

// Read and output values from a range of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read and output values from a range of cells elegantly
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read and output values from a range of cells elegantly
For Each cell In worksheet("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
$vbLabelText   $csharpLabel

El siguiente ejemplo de código puede actualizar fórmulas o aplicarlas a celdas específicas después de cargar y leer el libro de trabajo y la hoja de trabajo. El siguiente es el código:

// Set formulas for specific cells
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
// Set formulas for specific cells
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets
workbook.EvaluateAll();
' Set formulas for specific cells
worksheet("A1").Formula = "Sum(B8:C12)"
worksheet("B8").Formula = "=C9/C11"
worksheet("G30").Formula = "Max(C3:C7)"

' Force recalculate all formula values in all sheets
workbook.EvaluateAll()
$vbLabelText   $csharpLabel

Conclusión y oferta especial de IronXL

IronXL transforma archivos CSV a Excel con solo dos líneas de código, además del procesamiento de CSV en C#.

Sin la necesidad de Interop, usar la API de Excel de IronXL es muy fácil. Además, IronXL también ofrece una amplia gama de características para interactuar con el nivel de WorkBook, WorkSheet y Cells de Excel, como convertir entre formatos populares, formateo de datos de celda, fusionar celdas, insertar funciones matemáticas, e incluso gestionar gráficos y agregar imágenes.

Puedes iniciar sin marca de agua usando claves de licencia de prueba de IronXL.

Las licencias comienzan en $799 e incluyen un año de soporte y actualizaciones gratuitas.

IronPDF, IronXL, IronOCR, IronBarcode y el IronWebScraper son todos parte de la suite de Iron Software. Iron Software te permite comprar su paquete completo por un precio reducido. Puedes usar todas esas herramientas al precio de dos.

Esta es definitivamente una opción que vale la pena explorar.

Preguntas Frecuentes

¿Cómo puedo leer un archivo CSV en C#?

Puedes leer un archivo CSV en C# usando la biblioteca IronXL empleando el método LoadCSV, el cual te permite cargar los datos CSV en un objeto WorkBook para su posterior manipulación.

¿Cuál es la mejor manera de convertir los datos CSV a un formato Excel en C#?

La mejor manera de convertir datos CSV a un formato Excel en C# es usando IronXL. Carga tu CSV en un objeto WorkBook y utiliza el método SaveAs para guardarlo como un archivo Excel.

¿Cómo manejar archivos CSV con delimitadores personalizados en C# usando una biblioteca?

Con IronXL, puedes manejar archivos CSV con delimitadores personalizados especificando el delimitador como un parámetro opcional en el método LoadCSV.

¿Puedo convertir directamente datos CSV a un formato de base de datos en C#?

Sí, puedes convertir los datos CSV a un formato de base de datos en C# usando IronXL al utilizar el método ToDataTable, que transforma los datos en un objeto DataTable apto para operaciones de base de datos.

¿Qué métodos están disponibles para verificar archivos CSV inexistentes usando C#?

En C#, puedes usar el método Exists de IronXL para verificar si un archivo CSV existe antes de intentar cargarlo, evitando así errores relacionados con archivos inexistentes.

¿Cómo puedo manipular datos de Excel después de convertirlos de CSV en C#?

Después de convertir CSV a Excel en C#, puedes manipular los datos utilizando las funciones de IronXL como formatear, fusionar celdas, insertar funciones matemáticas y agregar gráficas o imágenes.

¿Qué ventajas ofrece IronXL para leer y convertir archivos CSV en C#?

IronXL ofrece ventajas como fácil instalación, no necesita interop adicional, soporte para delimitadores personalizados y potentes métodos para convertir y manipular datos CSV dentro de Excel.

¿Cómo se pueden manejar caracteres especiales en datos CSV en C#?

IronXL puede manejar caracteres especiales en datos CSV permitiéndote especificar la codificación de archivos y delimitadores al cargar el archivo CSV, garantizando la integridad y precisión de los datos.

¿Qué soporte está disponible para los usuarios de IronXL?

Las licencias de IronXL incluyen un año de soporte gratuito y actualizaciones, proporcionando asistencia y asegurando que tengas las últimas funciones y correcciones.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más