USO DE IRONXL

Cómo convertir un conjunto de datos a CSV en C#

Chaknith Bin
Chaknith Bin
18 de abril, 2023
Actualizado 20 de febrero, 2024
Compartir:

El siguiente artículo mostrará cómo convertir un conjunto de datos de C# en un archivo CSV.

IronXL es una excelente solución para trabajar con hojas de cálculo, ya sea en formato CSV o archivos de Excel. IronXL es gratuito para el desarrollo, fácil de usar y proporciona amplias funcionalidades para trabajar con cualquier tipo de hoja de cálculo. Es seguro y ofrece un alto rendimiento. Antes de seguir adelante, hagamos una breve introducción a IronXL.

IronXL

IronXL es una biblioteca de Iron Software que permite a los desarrolladores de C# leer, generar y editar archivos de Excel (y otros archivos de hoja de cálculo) en aplicaciones y sitios web .NET.

IronXL es una forma rápida y sencilla de trabajar con Excel y otros archivos de hoja de cálculo en C# y .NET. IronXL funciona bien con .NET Framework, .NET Core y Azure sin necesidad de Office Excel Interopm. IronXL tampoco requiere la instalación de Microsoft Office ni incluye ninguna otra dependencia de este tipo.

Pasemos a crear y escribir el código para crear un archivo CSV para un conjunto de datos.

Crear un nuevo proyecto de Visual Studio

Abra Visual Studio IDE; se recomienda la última versión de Visual Studio, pero puede utilizar cualquiera según sus preferencias. Tenga en cuenta que los pasos para crear un nuevo proyecto pueden variar de una versión a otra.

Cómo convertir un conjunto de datos a CSV en C#, Figura 1: ventana de inicio de Visual Studio

Ventana de inicio de Visual Studio

Haga clic en Crear un nuevo proyecto. Aparecerá una nueva ventana como la que se muestra a continuación.

Cómo convertir un conjunto de datos a CSV en C#, Figura 2: Crear un nuevo proyecto en Visual Studio

Crear un nuevo proyecto en Visual Studio

Seleccione su plantilla de proyecto preferida de la lista. Haga clic en el botón Siguiente, y aparecerá una nueva ventana como se muestra a continuación.

Cómo convertir un conjunto de datos a CSV en C#, Figura 3: Configurar el proyecto recién creado

Configurar el proyecto recién creado

Nombre su proyecto, seleccione su ubicación y presione el botón Siguiente. Aparecerá una nueva ventana como la que se muestra a continuación.

Cómo convertir un conjunto de datos a CSV en C#, Figura 4: Seleccionar una versión de .NET Framework

Seleccione una versión de .NET Framework

Seleccione su .NET Framework de destino. Puede seleccionar cualquier .NET Framework que se ajuste a sus necesidades, ya que IronXL es compatible con todos los .NET Framework. Este tutorial utilizará .NET 7. Haga clic en el botón Crear, y se creará un nuevo proyecto, como se muestra a continuación.

Cómo convertir un conjunto de datos a CSV en C#, Figura 5: una nueva aplicación de consola en Visual Studio

una nueva Aplicación de Consola en Visual Studio

Ahora, instala el paquete NuGet de IronXL para utilizarlo en esta aplicación.

Instalar IronXL

Abra la consola del gestor de paquetes NuGet e introduzca el siguiente comando.

Install-Package IronXL.Excel

El paquete NuGet se instalará y estará listo para usar como se muestra a continuación.

Cómo convertir un conjunto de datos a CSV en C#, Figura 6: La instalación del paquete IronXL y sus dependencias de paquete

La instalación del paquete IronXL y sus dependencias del paquete

Ahora, vamos a escribir algo de código para convertir un conjunto de datos en un archivo CSV en C#.

Este ejemplo rellenará los datos de una base de datos SQL server. Después de obtener el conjunto de datos de la base de datos SQL, crearemos un archivo CSV utilizando estos datos de entrada.

Crear la tabla de datos

El primer paso es rellenar los datos desde SQL, pero puede utilizar cualquier fuente de datos que prefiera.

Este tutorial utiliza los siguientes datos:

Cómo convertir un conjunto de datos a CSV en C#, Figura 7: Crear una nueva base de datos con datos de muestra

Crear una nueva base de datos con datos de muestra

Este es el script SQL para crear los datos de muestra:

USE Test_DB

Create Table STUDENT_DATA
(
    REG_NUM INT PRIMARY KEY,
    FIRST_NAME VARCHAR(30),
    LAST_NAME VARCHAR(30),
    CLASS VARCHAR(5),
    CONTACT_NUM VARCHAR(15)
);

INSERT INTO STUDENT_DATA
VALUES
(123, 'JHON', 'SMITH', '2', '(223) 444-1234'),
(124, 'THOMAS', 'CHARLES', '2', '(332) 555-1235'),
(125, 'WILLIAM', 'RICHARD', '2', '(432) 666-1236'),
(126, 'JAMES', 'BOND', '2', '(543) 777-1237'),
(127, 'CRISTOPHER', 'MICHAL', '2', '(555) 999-1238'),
(128, 'DONALD', 'MARK', '2', '(777) 888-1239');

El siguiente código C# se utiliza para exportar la tabla de datos a un archivo CSV.

public static DataTable getData()
{
    string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
    string query = "select * from STUDENT_DATA";
    try
    {
        SqlConnection conn = new SqlConnection(connString);
        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();
        // create data adapter
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        // this will query your database and return the result to your datatable
        DataTable dt = new DataTable();
        da.Fill(dt);
        da.Dispose();
        return dt;
    } catch(Exception)
    {
        throw;
    }
}

static void Main(string [] args)
{
    DataTable table = getData();
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
    wb.Metadata.Author = "JOHN";
    WorkSheet ws = wb.DefaultWorkSheet;
    int rowCount = 1;
    foreach (DataRow row in table.Rows)
    {
        ws ["A" + (rowCount)].Value = row [0].ToString();
        ws ["B" + (rowCount)].Value = row [1].ToString();
        ws ["C" + (rowCount)].Value = row [2].ToString();
        ws ["D" + (rowCount)].Value = row [3].ToString();
        ws ["E" + (rowCount)].Value = row [4].ToString();
        rowCount++;
    }
    wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv"); // 
}
public static DataTable getData()
{
    string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
    string query = "select * from STUDENT_DATA";
    try
    {
        SqlConnection conn = new SqlConnection(connString);
        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();
        // create data adapter
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        // this will query your database and return the result to your datatable
        DataTable dt = new DataTable();
        da.Fill(dt);
        da.Dispose();
        return dt;
    } catch(Exception)
    {
        throw;
    }
}

static void Main(string [] args)
{
    DataTable table = getData();
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
    wb.Metadata.Author = "JOHN";
    WorkSheet ws = wb.DefaultWorkSheet;
    int rowCount = 1;
    foreach (DataRow row in table.Rows)
    {
        ws ["A" + (rowCount)].Value = row [0].ToString();
        ws ["B" + (rowCount)].Value = row [1].ToString();
        ws ["C" + (rowCount)].Value = row [2].ToString();
        ws ["D" + (rowCount)].Value = row [3].ToString();
        ws ["E" + (rowCount)].Value = row [4].ToString();
        rowCount++;
    }
    wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv"); // 
}
Public Shared Function getData() As DataTable
	Dim connString As String = "server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;"
	Dim query As String = "select * from STUDENT_DATA"
	Try
		Dim conn As New SqlConnection(connString)
		Dim cmd As New SqlCommand(query, conn)
		conn.Open()
		' create data adapter
		Dim da As New SqlDataAdapter(cmd)
		' this will query your database and return the result to your datatable
		Dim dt As New DataTable()
		da.Fill(dt)
		da.Dispose()
		Return dt
	Catch e1 As Exception
		Throw
	End Try
End Function

Shared Sub Main(ByVal args() As String)
	Dim table As DataTable = getData()
	Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
	wb.Metadata.Author = "JOHN"
	Dim ws As WorkSheet = wb.DefaultWorkSheet
	Dim rowCount As Integer = 1
	For Each row As DataRow In table.Rows
		ws ("A" & (rowCount)).Value = row (0).ToString()
		ws ("B" & (rowCount)).Value = row (1).ToString()
		ws ("C" & (rowCount)).Value = row (2).ToString()
		ws ("D" & (rowCount)).Value = row (3).ToString()
		ws ("E" & (rowCount)).Value = row (4).ToString()
		rowCount += 1
	Next row
	wb.SaveAsCsv("D:\Tutorial Project\Save_DataTable_CSV.csv")
End Sub
$vbLabelText   $csharpLabel

Código Explicación

El método getData() recuperará datos de una base de datos SQL Server, como se discutió anteriormente.

En la función principal, se creará un WorkBook usando IronXL y luego se creará un WorkSheet.

En un bucle for, los datos se cargarán en las filas de la hoja de cálculo dada.

Después de eso, guarde este archivo como un CSV usando la función SaveAsCsv proporcionada por IronXL.

Salida

El archivo CSV generado por este programa es el siguiente:

Cómo convertir un conjunto de datos a CSV en C#, Figura 8: El archivo de salida CSV

El archivo de salida CSV

Está claro que el archivo CSV se genera correctamente y se ajusta a la entrada proporcionada.

Resumen

Este artículo muestra cómo crear un archivo CSV en C# a partir de un conjunto de datos. La biblioteca también puede leer archivos CSV usando C#. El conjunto de datos de una base SQL Server se rellena y crea un archivo CSV en tres pasos:

  1. Obtener datos de SQL Server.

  2. Introducir datos en una tabla de datos.

  3. Cree un archivo CSV a partir de esa tabla de datos.

    Es muy fácil crear un archivo CSV en .NET 7 utilizando IronXL, como se demostró anteriormente. El rendimiento del programa es excepcional, ya que está escrito en .NET 7 con IronXL. IronXL proporciona otras funciones útiles como la creación, lectura y manipulación de archivos Excel. Para obtener más detalles, visite la documentación oficial.

    Además, IronPDF ofrece a los desarrolladores métodos para renderizar documentos PDF en imágenes y extraer texto y contenido de un PDF. Además, IronPDF también es capaz de renderizar gráficos en PDFs, añadir códigos de barras, mejorar la seguridad con contraseñas de forma programática.

    La versión gratuita de IronXL se utiliza con fines de desarrollo. Para implementar una aplicación en producción, por favor obtenga una prueba gratuita o una licencia comercial. IronXL es parte de Iron Suite, que consta de cinco bibliotecas:

  4. IronXL, que se explora hoy.

  5. IronPDF para generar, leer y manipular archivos PDF

  6. IronOCR para trabajar extrayendo texto de imágenes

  7. IronBarcode para leer y generar códigos de barras

  8. IronWebScraper para extraer datos estructurados de sitios web.

    Puede obtener todos estos productos por el precio de dos si los compra juntos.

Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.
< ANTERIOR
Cómo importar archivos Excel en C#
SIGUIENTE >
Cómo escribir en un archivo Excel en VB.NET