Cómo leer un archivo CSV en un DataTable en C#
Trabajar con archivos CSV es una tarea común para los desarrolladores .NET, ya sea que estés importando informes de ventas, procesando inventarios o sincronizando registros de clientes. Convertir un archivo CSV en un DataTable facilita su manipulación, análisis o inserción en una tabla de base de datos.
Leer archivos CSV en C# puede ser complicado: archivos grandes, diferentes delimitadores o comas incrustadas a menudo requieren un análisis complejo o Excel. IronXL simplifica esto: con solo unas pocas líneas de código, puedes leer archivos CSV desde cualquier ruta de archivo, convertirlos en un DataTable con los encabezados de columna adecuados y prepararlos para operaciones masivas de bases de datos, todo sin Excel.
En esta guía, aprenderás a:
- Cargar un archivo CSV en un DataTable en C#
- Manejar diferentes delimitadores como comas, tabulaciones o punto y coma
- Importar tu DataTable directamente en SQL Server de manera eficiente
- Gestionar grandes conjuntos de datos de manera confiable sin problemas de memoria
Al final, tendrás un flujo de trabajo completo y práctico para convertir datos CSV en información procesable utilizando IronXL en tus aplicaciones .NET.
¿Por qué es esencial la conversión de CSV a DataTable?
La conversión de CSV a DataTable permite a los desarrolladores transformar valores separados por comas (datos CSV) en objetos estructurados como un DataTable para posterior procesamiento. Ya sea que estés manejando datos de inventario, registros de clientes o registros de transacciones, poder convertir CSV a un DataTable nuevo de manera eficiente es crucial. Usando la primera fila como encabezados de columna, puedes asegurarte de que las columnas del DataTable coincidan con el esquema de la tabla de tu base de datos.
Los enfoques tradicionales a menudo enfrentan dificultades con archivos grandes, diferentes delimitadores o gestión de memoria. IronXL elimina estos desafíos y maneja diferentes delimitadores, campos entre comillas y comas incrustadas sin problemas. Las capacidades de lectura de CSV de IronXL eliminan estos problemas comunes.
¿Cómo instalar IronXL?
Comenzar con IronXL solo requiere una simple instalación del paquete NuGet. Abre la Consola del Administrador de Paquetes NuGet en Visual Studio y ejecuta:
Install-Package IronXL.Excel
Una vez instalado, agrega el espacio de nombres IronXL a tu proyecto:
using IronXL;
using System.Data;using IronXL;
using System.Data;Imports IronXL
Imports System.DataEsto proporciona acceso a todas las potentes capacidades de procesamiento de CSV sin ninguna dependencia de Excel. Para más detalles sobre la extensa API de IronXL, consulta la Documentación de Referencia API.
¿Cómo convertir CSV a DataTable?
La belleza de IronXL reside en su simplicidad. Aquí te mostramos cómo leer un archivo CSV y convertirlo en un DataTable:
// Load CSV file into a WorkBook object
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv",
fileFormat: ExcelFileFormat.XLSX);
// Access the default worksheet
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert to DataTable with headers
DataTable dataTable = worksheet.ToDataTable(true);
// Display the data
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item}\t");
}
Console.WriteLine();
}// Load CSV file into a WorkBook object
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv",
fileFormat: ExcelFileFormat.XLSX);
// Access the default worksheet
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert to DataTable with headers
DataTable dataTable = worksheet.ToDataTable(true);
// Display the data
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item}\t");
}
Console.WriteLine();
}IRON VB CONVERTER ERROR developers@ironsoftware.comEl método LoadCSV analiza inteligentemente tu archivo CSV, manejando automáticamente casos comunes como campos entre comillas y comas incrustadas. El parámetro fileFormat indica a IronXL cómo interpretar los datos CSV internamente, asegurando que se traten como una estructura compatible con Excel. Una vez cargado, el método ToDataTable(true) convierte la hoja de trabajo en un DataTable, con el parámetro true indicando que la primera fila debe usarse como encabezados de columna. Esto da como resultado un DataTable limpio y estructurado con columnas nombradas que coinciden con los encabezados de tu CSV. Para más opciones de manipulación avanzada, explora el tutorial completo de Excel a DataTable.
¿Cómo importar DataTable en SQL Server?
Una vez que tienes tu DataTable, importarlo en SQL Server se vuelve notablemente eficiente usando SqlBulkCopy:
using System.Data;
using Microsoft.Data.SqlClient;
using IronXL;
class Program
{
static void Main(string[] args)
{
// Create connection string
string connectionString = @"Data Source=localhost;Initial Catalog=SalesDB;
Integrated Security=True;TrustServerCertificate=True;";
// Read CSV into DataTable
WorkBook workbook = WorkBook.LoadCSV("inventory_report.csv");
DataTable dataTable = workbook.DefaultWorkSheet.ToDataTable(true);
// Bulk insert into SQL Server
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
// Set destination table name
bulkCopy.DestinationTableName = "dbo.Inventory";
// Map DataTable columns to SQL table columns
bulkCopy.ColumnMappings.Add("ProductCode", "product_code");
bulkCopy.ColumnMappings.Add("Quantity", "quantity");
bulkCopy.ColumnMappings.Add("LastUpdated", "last_updated");
// Set batch size for better performance
bulkCopy.BatchSize = 1000;
// Write data to SQL Server
bulkCopy.WriteToServer(dataTable);
}
}
Console.WriteLine($"Successfully imported {dataTable.Rows.Count} records");
}
}using System.Data;
using Microsoft.Data.SqlClient;
using IronXL;
class Program
{
static void Main(string[] args)
{
// Create connection string
string connectionString = @"Data Source=localhost;Initial Catalog=SalesDB;
Integrated Security=True;TrustServerCertificate=True;";
// Read CSV into DataTable
WorkBook workbook = WorkBook.LoadCSV("inventory_report.csv");
DataTable dataTable = workbook.DefaultWorkSheet.ToDataTable(true);
// Bulk insert into SQL Server
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
// Set destination table name
bulkCopy.DestinationTableName = "dbo.Inventory";
// Map DataTable columns to SQL table columns
bulkCopy.ColumnMappings.Add("ProductCode", "product_code");
bulkCopy.ColumnMappings.Add("Quantity", "quantity");
bulkCopy.ColumnMappings.Add("LastUpdated", "last_updated");
// Set batch size for better performance
bulkCopy.BatchSize = 1000;
// Write data to SQL Server
bulkCopy.WriteToServer(dataTable);
}
}
Console.WriteLine($"Successfully imported {dataTable.Rows.Count} records");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comLa clase SqlBulkCopy proporciona un rendimiento excepcional para importaciones de datos a gran escala. La colección ColumnMappings te permite mapear columnas de DataTable a columnas de base de datos con nombres diferentes, asegurando flexibilidad en tu esquema de datos. La propiedad BatchSize optimiza el uso de memoria procesando registros en bloques en lugar de cargar todo de una vez. Este enfoque puede manejar milones de registros de manera eficiente, lo que lo hace ideal para operaciones de datos de escala empresarial. Aprende más sobre las capacidades de DataSet y DataTable de IronXL.
Resultado
Aquí, podemos usar la consulta *SELECT FROM dbo.Inventory;** en SSMS para verificar que nuestros datos CSV realmente se hayan importado en el SQL Server. Primero, echemos un vistazo a los datos que usamos en nuestro archivo CSV de ejemplo:

Ahora, si miras el resultado de nuestra consulta, podemos ver que ha copiado exitosamente cada columna, encabezado y fila en la tabla de la base de datos.

¿Cómo manejar diferentes delimitadores?
No todos los archivos CSV usan comas. IronXL maneja sin problemas varios delimitadores:
using IronXL;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main()
{
// --- Tab-delimited file ---
string tsvPath = @"export_data.tsv";
WorkBook tsvWorkbook = WorkBook.LoadCSV(tsvPath, ExcelFileFormat.XLSX, "\t");
// --- Semicolon-delimited file ---
string semiPath = @"european_data.csv";
string tempCsv = Path.Combine(Path.GetTempPath(), "european_data_comma.csv");
// Replace semicolons with commas for proper parsing
var lines = File.ReadAllLines(semiPath);
for (int i = 0; i < lines.Length; i++)
{
lines[i] = lines[i].Replace(';', ',');
}
File.WriteAllLines(tempCsv, lines);
WorkBook semiWorkbook = WorkBook.LoadCSV(tempCsv, ExcelFileFormat.XLSX);
// Print both workbooks
PrintWorkbook(tsvWorkbook, "Tab-delimited File");
PrintWorkbook(semiWorkbook, "Semicolon-delimited File");
}
static void PrintWorkbook(WorkBook workbook, string name)
{
Console.WriteLine($"\n--- {name} ---\n");
DataTable dt = workbook.DefaultWorkSheet.ToDataTable(true);
// Print column headers
foreach (DataColumn col in dt.Columns)
{
Console.Write($"{col.ColumnName}\t");
}
Console.WriteLine();
// Print rows
foreach (DataRow row in dt.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item}\t");
}
Console.WriteLine();
}
}
}using IronXL;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main()
{
// --- Tab-delimited file ---
string tsvPath = @"export_data.tsv";
WorkBook tsvWorkbook = WorkBook.LoadCSV(tsvPath, ExcelFileFormat.XLSX, "\t");
// --- Semicolon-delimited file ---
string semiPath = @"european_data.csv";
string tempCsv = Path.Combine(Path.GetTempPath(), "european_data_comma.csv");
// Replace semicolons with commas for proper parsing
var lines = File.ReadAllLines(semiPath);
for (int i = 0; i < lines.Length; i++)
{
lines[i] = lines[i].Replace(';', ',');
}
File.WriteAllLines(tempCsv, lines);
WorkBook semiWorkbook = WorkBook.LoadCSV(tempCsv, ExcelFileFormat.XLSX);
// Print both workbooks
PrintWorkbook(tsvWorkbook, "Tab-delimited File");
PrintWorkbook(semiWorkbook, "Semicolon-delimited File");
}
static void PrintWorkbook(WorkBook workbook, string name)
{
Console.WriteLine($"\n--- {name} ---\n");
DataTable dt = workbook.DefaultWorkSheet.ToDataTable(true);
// Print column headers
foreach (DataColumn col in dt.Columns)
{
Console.Write($"{col.ColumnName}\t");
}
Console.WriteLine();
// Print rows
foreach (DataRow row in dt.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item}\t");
}
Console.WriteLine();
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEste código carga archivos CSV con diferentes delimitadores en objetos WorkBook de IronXL. Los archivos delimitados por tabulaciones se leen usando "\t" como separador, mientras que los archivos delimitados por punto y coma se convierten a formato CSV estándar antes de cargarlos. La hoja de trabajo predeterminada de cada libro se convierte en un DataTable con ToDataTable(true), que usa la primera fila como encabezados de columna.
El método PrintWorkbook luego itera a través del DataTable y muestra los datos en la consola, incluidos los encabezados y todas las filas. Esta flexibilidad aborda muchos de los desafíos comunes de análisis de CSV discutidos por los desarrolladores.
Resultado
Como puedes ver en nuestra salida de consola, ambos archivos están correctamente formateados en tablas de datos, a pesar de empezar con diferentes delimitadores.

Conclusión
IronXL transforma la compleja tarea de importación de bases de datos CSV en un proceso sencillo y confiable. Con solo unas pocas líneas de código, puedes:
- Leer archivos CSV desde cualquier ruta de archivo
- Convertir datos CSV en un nuevo DataTable
- Preservar encabezados de columna y columnas de DataTable
- Importar millones de filas en una tabla de base de datos de manera eficiente
La biblioteca maneja automáticamente las complejidades del análisis de CSV, la gestión de memoria y las conversiones de tipos de datos, permitiéndote concentrarte en tu lógica de negocio en lugar de en los detalles del procesamiento de archivos.
¿Listo para optimizar tu flujo de trabajo de importación de datos? Comienza tu prueba gratuita para encontrar el ajuste perfecto para las necesidades de tu equipo.
Preguntas Frecuentes
¿Cuál es la mejor manera de leer archivos CSV en un DataTable en C#?
Usando IronXL, puede leer eficientemente archivos CSV en un DataTable en C# con ejemplos de código simples proporcionados en nuestra guía para desarrolladores.
¿Por qué debería usar IronXL para la conversión de CSV a DataTable?
IronXL ofrece una API sencilla para analizar archivos CSV y convertirlos en DataTables, permitiéndole manipular y analizar fácilmente sus datos en C#.
¿Puede IronXL manejar archivos CSV grandes al convertirlos a DataTables?
Sí, IronXL está diseñado para procesar eficientemente archivos CSV grandes y convertirlos en DataTables sin problemas de rendimiento.
¿IronXL admite la manipulación de datos después de convertir CSV a DataTable?
Absolutamente, una vez que convierte un archivo CSV en un DataTable usando IronXL, puede manipular y analizar los datos fácilmente según sea necesario.
¿Cómo puedo importar datos CSV a una base de datos usando IronXL?
Después de convertir su archivo CSV en un DataTable con IronXL, puede insertar los datos en una base de datos usando conectividad estándar de bases de datos en C#.
¿Es adecuado IronXL para procesar archivos CSV en aplicaciones empresariales?
Sí, IronXL está diseñado para manejar tareas de procesamiento de CSV en aplicaciones empresariales, ofreciendo un rendimiento sólido y confiabilidad.
¿Cuáles son las ventajas de convertir archivos CSV a DataTables en C#?
Convertir archivos CSV a DataTables permite una manipulación, análisis e integración de datos más fácil con bases de datos, mejorando las capacidades de manejo de datos de su aplicación.
¿Puede usarse IronXL para otros tipos de archivos de hojas de cálculo además de CSV?
Sí, IronXL admite varios tipos de archivos de hojas de cálculo, incluidos los formatos de Excel, lo que permite capacidades versátiles de procesamiento de datos en C#.






