Saltar al pie de página
USANDO IRONXL

C# CSV Library: Tutorial Completo usando IronXL

Trabajar con archivos CSV en C# requiere una biblioteca que maneje más que una simple división de líneas. Necesitas detección de codificación confiable, manejo correcto de delimitadores, tipificación fuerte y, idealmente, la capacidad de mover datos entre CSV y Excel sin mantener dos dependencias separadas. IronXL ofrece todo eso en una sola biblioteca .NET -- no se requiere Microsoft Office, ni interoperabilidad COM, ni soluciones frágiles. Ya sea que estés procesando archivos de datos planos en un servidor, construyendo un pipeline de datos o ofreciendo a los usuarios una descarga de hoja de cálculo, IronXL te brinda una API consistente para cada formato.

¿Cómo configurar una biblioteca de hojas de cálculo en C#?

Instalar IronXL lleva menos de un minuto a través de NuGet. Abre la Consola de Administrador de Paquetes en Visual Studio y ejecuta el comando a continuación, o utiliza la CLI de .NET desde cualquier terminal:

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

Después de instalar el paquete, agrega el espacio de nombres a cualquier archivo donde quieras trabajar con datos de hojas de cálculo:

using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

IronXL está dirigido a .NET Framework 4.6.2+ y todas las versiones modernas de .NET (Core, 5, 6, 7, 8, 9 y 10). Funciona en Windows, Linux y macOS, haciéndolo adecuado tanto para herramientas de escritorio como para cargas de trabajo de servidores en contenedores. Visita la guía de instalación de IronXL para obtener instrucciones paso a paso sobre fuentes de paquetes y activación de licencias.

¿Cómo leer archivos CSV en C#?

Leer un archivo CSV con IronXL sigue el mismo patrón que cargar cualquier hoja de cálculo. Llama a WorkBook.Load con la ruta del archivo y IronXL infiere el formato a partir de la extensión -- no se requiere configuración adicional:

// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");

// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Read individual cells by Excel-style address
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;

// Iterate rows, starting at index 1 to skip the header
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");

// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Read individual cells by Excel-style address
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;

// Iterate rows, starting at index 1 to skip the header
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
$vbLabelText   $csharpLabel

El objeto WorkBook expone el modelo completo de hoja de cálculo. Accedes a las celdas con notación familiar de Excel como "A2", y las propiedades de conversión incorporadas -- StringValue, DecimalValue, IntValue, DateTimeValue -- manejan la coerción de tipos para que no tengas que analizar cadenas manualmente.

¿Qué opciones de direccionamiento de celdas están disponibles?

Además del acceso a celdas individuales, IronXL admite notación de rango e iteración de filas/columnas. Puedes dirigir un bloque rectangular de celdas con una expresión de rango como workSheet["A2:C10"] e iterar a través de él como una colección plana. Esto es útil cuando quieres validar o transformar un bloque conocido de datos sin escribir bucles anidados:

// Access a range and print each value
foreach (var cell in workSheet["A2:C10"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Value}");
}
// Access a range and print each value
foreach (var cell in workSheet["A2:C10"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Value}");
}
$vbLabelText   $csharpLabel

Para contar filas dinámicas, la colección workSheet.Rows refleja automáticamente los datos cargados, por lo que no necesitas codificar de manera fija la cantidad de filas. Revisa el tutorial de lectura de CSV en C# para más patrones, incluyendo detección de encabezados y archivos con múltiples codificaciones.

¿Cómo mapear filas CSV a objetos personalizados?

Un requisito común es convertir datos tabulares CSV en una colección tipada. Puedes iterar filas y proyectar cada una en una clase C# simple:

public record SalesRecord(string Customer, decimal Amount, DateTime OrderDate);

WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var records = new List<SalesRecord>();

// Start at row 1 to skip the header row (row 0)
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    records.Add(new SalesRecord(
        Customer: row.Columns[0].StringValue,
        Amount: row.Columns[1].DecimalValue,
        OrderDate: row.Columns[2].DateTimeValue
    ));
}
public record SalesRecord(string Customer, decimal Amount, DateTime OrderDate);

WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var records = new List<SalesRecord>();

// Start at row 1 to skip the header row (row 0)
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    records.Add(new SalesRecord(
        Customer: row.Columns[0].StringValue,
        Amount: row.Columns[1].DecimalValue,
        OrderDate: row.Columns[2].DateTimeValue
    ));
}
$vbLabelText   $csharpLabel

Este enfoque separa limpiamente la lógica de análisis de la lógica de negocio y hace que cada registro esté fuertemente tipado en el resto de tu aplicación.

Cómo usar una biblioteca de CSV en C# para leer y escribir archivos: Figura 1 - Salida de lectura de archivo CSV

¿Cómo escribir archivos CSV en C#?

Crear un archivo CSV desde cero implica tres pasos: crear un WorkBook, poblar un WorkSheet, y llamar a SaveAsCsv. El proceso refleja cómo construirías cualquier hoja de cálculo, lo que mantiene la API consistente independientemente del formato de salida:

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");

// Write header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Write data rows
workSheet["A2"].Value = "Widget A";
workSheet["B2"].Value = 250;
workSheet["C2"].Value = 9.99;

workSheet["A3"].Value = "Gadget B";
workSheet["B3"].Value = 120;
workSheet["C3"].Value = 24.50;

// Export to CSV
workBook.SaveAsCsv("inventory.csv");
// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");

// Write header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Write data rows
workSheet["A2"].Value = "Widget A";
workSheet["B2"].Value = 250;
workSheet["C2"].Value = 9.99;

workSheet["A3"].Value = "Gadget B";
workSheet["B3"].Value = 120;
workSheet["C3"].Value = 24.50;

// Export to CSV
workBook.SaveAsCsv("inventory.csv");
$vbLabelText   $csharpLabel

SaveAsCsv maneja la colocación de delimitadores, la inclusión de comillas en campos que contienen comas y la normalización de saltos de línea. No necesitas gestionar ninguno de esos aspectos manualmente. IronXL preserva los tipos numéricos durante la exportación para que las herramientas derivadas como Excel o pandas interpreten los números como números, no como cadenas de texto entre comillas.

¿Cómo exportar un DataTable a CSV?

Muchas aplicaciones recuperan datos de una base de datos en un DataTable. IronXL puede insertar un DataTable completo en una hoja de trabajo con una sola llamada, haciendo las exportaciones masivas sencillas:

DataTable dataTable = GetProductsFromDatabase();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("products");

workSheet.InsertDataTable(dataTable, "A1");

workBook.SaveAsCsv("products.csv");
DataTable dataTable = GetProductsFromDatabase();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("products");

workSheet.InsertDataTable(dataTable, "A1");

workBook.SaveAsCsv("products.csv");
$vbLabelText   $csharpLabel

El método InsertDataTable escribe los encabezados de las columnas desde el esquema DataTable y llena todas las filas comenzando en la dirección que proporciones. Para conjuntos de datos más grandes, esto es mucho más eficiente que iterar filas manualmente. Consulta la documentación de exportación a CSV para opciones que incluyen delimitadores personalizados y configuraciones de codificación.

Cómo usar una biblioteca de CSV en C# para leer y escribir archivos: Figura 2 - Archivo CSV recién creado usando IronXL

¿Cómo convertir entre CSV y Excel en C#?

Una de las capacidades más valiosas que IronXL proporciona es la conversión bidireccional entre formatos CSV y Excel. La API es simétrica -- Load lee cualquier formato compatible, y la familia de métodos Save escribe en tu formato objetivo:

// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");

// Convert Excel back to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");

// Convert Excel back to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
$vbLabelText   $csharpLabel

Estas conversiones mantienen la integridad de los datos. Los valores numéricos se mantienen numéricos, los campos de fecha conservan su tipo, y los resultados de las fórmulas se evalúan a sus valores calculados antes de escribir. Cuando conviertes un archivo Excel de múltiples hojas a CSV, IronXL crea automáticamente un archivo CSV separado para cada hoja de trabajo:

WorkBook multiSheetWorkBook = WorkBook.Load("quarterly_report.xlsx");

// Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv");
WorkBook multiSheetWorkBook = WorkBook.Load("quarterly_report.xlsx");

// Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv");
$vbLabelText   $csharpLabel

Este comportamiento es particularmente útil para pipelines de informes donde los consumidores siguientes esperan un tema por archivo. El tutorial de escritura de CSV cubre opciones adicionales, como especificar el carácter delimitador y controlar qué hojas se incluyen en la exportación.

Cómo usar una biblioteca de CSV en C# para leer y escribir archivos: Figura 3 - Archivo Excel multipágina guardado como archivos CSV separados

Cómo usar una biblioteca de CSV en C# para leer y escribir archivos: Figura 4 - Archivo en formato Excel original vs. el archivo CSV convertido

Empiece con IronXL ahora.
green arrow pointer

¿Por qué las bibliotecas solo para CSV no son adecuadas para proyectos reales?

Muchos desarrolladores C# comienzan con CsvHelper o el TextFieldParser de Microsoft.VisualBasic. Ambos son herramientas capaces para flujos de trabajo solo de CSV. La brecha aparece cuando los requisitos se expanden: un interesado solicita una descarga en Excel en lugar de CSV, finanzas necesitan fórmulas preservadas, o la política de seguridad requiere archivos protegidos por contraseña. En ese punto, una biblioteca solo para CSV te obliga a agregar una segunda dependencia y mantener dos caminos de integración separados. Una biblioteca de hojas de cálculo unificada elimina esa división desde el principio.

Comparación de características entre IronXL y bibliotecas solo para CSV
Capacidad IronXL CsvHelper TextFieldParser
Leer archivos CSV
Escribir archivos CSV No
Leer/escribir XLSX No No
Evaluación de fórmulas No No
Estilo y formato de celdas No No
Archivos protegidos con contraseña No No
¿Se requiere dependencia de Office? No No No
Compatibilidad multiplataforma (.NET 10) Limitado

¿Qué características adicionales de hojas de cálculo proporciona una biblioteca unificada?

Más allá de la conversión de formatos, una biblioteca que maneja tanto CSV como Excel te brinda operaciones de hojas de cálculo que se vuelven útiles a medida que los proyectos crecen. Con IronXL específicamente, obtienes:

  • Evaluación de fórmulas -- puedes escribir fórmulas como =SUM(B2:B10) en celdas y leer de nuevo el resultado calculado sin que Excel esté presente.
  • Estilización de celdas y rangos -- aplica pesos de fuente, colores de fondo, formatos de número y bordes a través de la API de estilización de IronXL.
  • Protección con contraseña -- abre libros de trabajo cifrados con WorkBook.Load("secure.xlsx", "password") y guarda nuevos archivos con cifrado.
  • Rangos con nombre -- define y referencia regiones con nombre como lo harías en Excel, lo que simplifica la escritura de fórmulas y la validación de datos.
  • Soporte para archivos grandes -- IronXL procesa datos en código administrado sin cargar todo el archivo en memoria a la vez, lo que mantiene el uso de memoria predecible incluso para archivos con decenas de miles de filas.

La página de características de IronXL tiene una lista completa de operaciones compatibles.

¿Cómo maneja IronXL los despliegues multiplataforma?

Un desafío recurrente con las bibliotecas de hojas de cálculo es el comportamiento específico de la plataforma. Las bibliotecas que dependen de la interoperabilidad COM solo funcionan en Windows, y las bibliotecas que dependen de Office requieren una instalación de Office. IronXL es completamente código administrado sin dependencias nativas, por lo que el mismo binario funciona en contenedores Linux, máquinas de desarrollo macOS y servidores Windows sin cambios. Esto hace que sea sencillo desplegar en Azure, AWS, Docker, o cualquier objetivo .NET 10.

Para desarrolladores que construyen pipelines de datos con herramientas como Dapper o Entity Framework Core, IronXL encaja naturalmente como la capa de serialización: lee la entrada CSV, procesa con tu ORM, exporta los resultados como XLSX o CSV. La página de licencias de IronXL explica las licencias disponibles para uso comercial.

Cómo usar una biblioteca de CSV en C# para leer y escribir archivos: Figura 5 - Tabla de comparación entre IronXL y bibliotecas solo para csv

¿Cuales son tus próximos pasos?

IronXL te da una API única y consistente para leer, escribir y convertir archivos CSV y Excel en cualquier aplicación .NET 10. Los beneficios clave son sencillos: sin dependencia de Office, soporte multiplataforma, tipificación fuerte para valores de celdas, y un camino directo de proyectos solo para CSV a funcionalidad completa de hojas de cálculo cada vez que cambian los requisitos.

Cuando estés listo para profundizar, comienza con los temas más relevantes para tu proyecto actual. Si manejas principalmente pipelines de importación de CSV, los patrones de lectura y mapeo cubiertos arriba manejan la mayoría de los escenarios del mundo real. Si tus requisitos de salida varían -- a veces CSV para scripts descendentes, a veces XLSX para usuarios finales -- la sección de conversión de formatos muestra cómo servir a ambos con un solo código base.

Para equipos que construyen sistemas de informes o exportan resultados de bases de datos, el enfoque InsertDataTable escala bien y evita la sobrecarga de rendimiento de la asignación de celdas fila por fila. Combínalo con el estilizado de celdas para producir informes que los usuarios puedan abrir directamente en Excel sin tener que reformatear.

Para avanzar, sigue estos pasos:

  1. Instala la biblioteca a través de NuGet usando Install-Package IronXL o dotnet add package IronXL.
  2. Sigue la guía rápida en la guía de inicio de IronXL para cargar tu primer archivo CSV.
  3. Explora la conversión de formatos con el tutorial de CSV a Excel cuando necesites ambos formatos en el mismo proyecto.
  4. Revisa la referencia de la API en la referencia de objetos de IronXL para operaciones avanzadas de celdas, soporte para fórmulas y estilización.
  5. Empieza una prueba gratuita en la página de licencia de prueba de IronXL -- no se requiere tarjeta de crédito e incluye soporte técnico.

Si estás evaluando opciones junto con otras herramientas de Iron Software, la suite de productos de IronSoftware cubre la generación de PDF con IronPDF, lectura de códigos de barras, OCR, y más, todo compartiendo el mismo modelo de licenciamiento y canal de soporte.

Preguntas Frecuentes

¿Qué es IronXL y cómo ayuda con archivos CSV en C#?

IronXL es una poderosa biblioteca de C# que permite a los desarrolladores leer, escribir y convertir archivos CSV sin problemas. Ofrece soporte extendido para libros de trabajo de Excel, asegurando alto rendimiento y manejo consistente de filas, columnas y tipos de datos.

¿Por qué debería usar IronXL en lugar de bibliotecas gratuitas como CsvHelper?

Aunque CsvHelper es excelente para operaciones básicas de CSV, IronXL sobresale con características como soporte para libros de trabajo de Excel, rendimiento mejorado y manejo robusto de tipos de datos, haciéndolo adecuado para flujos de trabajo de hojas de cálculo más complejos.

¿Puede IronXL manejar ambos formatos CSV y Excel?

Sí, IronXL está diseñado para manejar eficientemente ambos formatos, CSV y Excel, permitiéndote convertir entre ellos con facilidad.

¿IronXL admite manejo de datos de alto rendimiento?

IronXL está diseñado para alto rendimiento, asegurando procesos suaves de importación y exportación de datos con velocidad y eficiencia óptimas.

¿Es posible integrar IronXL con flujos de trabajo de hojas de cálculo existentes?

Absolutamente, IronXL se integra perfectamente con los flujos de trabajo de hojas de cálculo existentes, mejorando la capacidad de gestionar datos en formatos CSV y Excel.

¿Qué hace que IronXL sea adecuado para operaciones complejas de archivos CSV?

IronXL proporciona características robustas como manejo consistente de filas, columnas y tipos de datos, haciéndolo ideal para operaciones complejas de archivos CSV que requieren más que un manejo básico.

¿Puedo usar IronXL para convertir archivos CSV a Excel?

Sí, una de las características clave de IronXL es su capacidad para convertir archivos CSV a formato Excel y viceversa, racionalizando los procesos de gestión de datos.

¿Cómo asegura IronXL un manejo confiable de archivos CSV?

IronXL asegura un manejo confiable de archivos CSV a través de sus características avanzadas, que incluyen el soporte para tipos de datos complejos y la integración con funcionalidades de Excel.

¿Cuáles son los beneficios de usar IronXL para importación/exportación de datos?

IronXL ofrece procesos suaves de importación/exportación de datos, ahorrando tiempo y esfuerzo a los desarrolladores mientras asegura la integridad y precisión de los datos a través de los formatos.

¿Es fácil de usar IronXL para desarrolladores nuevos en operaciones de CSV en C#?

Sí, IronXL está diseñado con características fáciles de usar y ejemplos de código simples, haciéndolo accesible y fácil de usar para desarrolladores nuevos en operaciones de CSV en C#.

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

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame