Saltar al pie de página
USANDO IRONXL

Cómo convertir un DataSet en CSV en C#

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

IronXL es una gran solución para trabajar con hojas de cálculo, ya sea en formato CSV o archivos de Excel. IronXL es gratuito para desarrollo, fácil de usar y ofrece amplias funcionalidades para trabajar con cualquier tipo de hoja de cálculo. Es seguro y ofrece un alto rendimiento. Antes de continuar, 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 Excel (y otras hojas de cálculo) en aplicaciones y sitios web .NET.

IronXL es una forma rápida y fácil de trabajar con archivos Excel y otras hojas de cálculo en C# y .NET. IronXL funciona bien con .NET Framework, .NET Core y Azure sin necesidad de Office Excel Interop. 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 usar cualquier otra según su preferencia. Tenga en cuenta que los pasos para crear un nuevo proyecto pueden diferir 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

Haz clic en Crear un nuevo proyecto. Aparecerá una nueva ventana como 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 Crea 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 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 Seleccionar una versión de .NET Framework

Seleccione su objetivo .NET Framework. Puede seleccionar cualquier .NET Framework que se adapte a sus necesidades, ya que IronXL es compatible con cada .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, instale el paquete NuGet de IronXL para usarlo en esta aplicación.

Instalar IronXL

Abra la consola del administrador de paquetes NuGet e ingrese 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 de paquete

Ahora, escribamos un poco de código para convertir un conjunto de datos en un archivo CSV en C#.

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

Crear la tabla de datos

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

Este tutorial usa 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

Aquí está 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.

using System;
using System.Data;
using System.Data.SqlClient;
using IronXL;

class Program
{
    // Method to retrieve data from SQL database and return as DataTable
    public static DataTable GetData()
    {
        // Define connection string (modify accordingly for your local server)
        string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
        string query = "SELECT * FROM STUDENT_DATA";

        try
        {
            // Create SQL connection
            using SqlConnection conn = new SqlConnection(connString);
            // Create SQL command
            SqlCommand cmd = new SqlCommand(query, conn);
            conn.Open();
            // Create data adapter
            using SqlDataAdapter da = new SqlDataAdapter(cmd);
            // Query the database and return the result to a data table
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
            throw;
        }
    }

    static void Main(string[] args)
    {
        // Retrieve data and store it in a DataTable
        DataTable table = GetData();

        // Create a new Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
        wb.Metadata.Author = "JOHN";

        // Use the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;
        int rowCount = 1;

        // Populate the worksheet with data from the DataTable
        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++;
        }

        // Save the workbook as a CSV file
        wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv");
    }
}
using System;
using System.Data;
using System.Data.SqlClient;
using IronXL;

class Program
{
    // Method to retrieve data from SQL database and return as DataTable
    public static DataTable GetData()
    {
        // Define connection string (modify accordingly for your local server)
        string connString = @"server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;";
        string query = "SELECT * FROM STUDENT_DATA";

        try
        {
            // Create SQL connection
            using SqlConnection conn = new SqlConnection(connString);
            // Create SQL command
            SqlCommand cmd = new SqlCommand(query, conn);
            conn.Open();
            // Create data adapter
            using SqlDataAdapter da = new SqlDataAdapter(cmd);
            // Query the database and return the result to a data table
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
            throw;
        }
    }

    static void Main(string[] args)
    {
        // Retrieve data and store it in a DataTable
        DataTable table = GetData();

        // Create a new Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
        wb.Metadata.Author = "JOHN";

        // Use the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;
        int rowCount = 1;

        // Populate the worksheet with data from the DataTable
        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++;
        }

        // Save the workbook as a CSV file
        wb.SaveAsCsv(@"D:\Tutorial Project\Save_DataTable_CSV.csv");
    }
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports IronXL

Friend Class Program
	' Method to retrieve data from SQL database and return as DataTable
	Public Shared Function GetData() As DataTable
		' Define connection string (modify accordingly for your local server)
		Dim connString As String = "server=DESKTOP-NIP3TOE\SQLEXPRESS; Database=Test_DB; Integrated Security=True;"
		Dim query As String = "SELECT * FROM STUDENT_DATA"

		Try
			' Create SQL connection
			Using conn As New SqlConnection(connString)
				' Create SQL command
				Dim cmd As New SqlCommand(query, conn)
				conn.Open()
				' Create data adapter
				Using da As New SqlDataAdapter(cmd)
					' Query the database and return the result to a data table
					Dim dt As New DataTable()
					da.Fill(dt)
					Return dt
				End Using
			End Using
		Catch ex As Exception
			Console.WriteLine($"An error occurred: {ex.Message}")
			Throw
		End Try
	End Function

	Shared Sub Main(ByVal args() As String)
		' Retrieve data and store it in a DataTable
		Dim table As DataTable = GetData()

		' Create a new Workbook
		Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
		wb.Metadata.Author = "JOHN"

		' Use the default worksheet
		Dim ws As WorkSheet = wb.DefaultWorkSheet
		Dim rowCount As Integer = 1

		' Populate the worksheet with data from the DataTable
		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

		' Save the workbook as a CSV file
		wb.SaveAsCsv("D:\Tutorial Project\Save_DataTable_CSV.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

Explicación del código

  • El método GetData() recupera datos de una base de datos de SQL Server y los devuelve como un DataTable.

  • En el método Main, se crea un WorkBook usando IronXL, y luego los datos se rellenan en un WorkSheet.

  • Un bucle foreach itera a través de las filas del DataTable, insertando cada valor en una nueva fila en el WorkSheet.

  • Finalmente, el archivo CSV se guarda usando la función SaveAsCsv proporcionada por IronXL.

Producción

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 alinea con la entrada proporcionada.

Resumen

Este artículo demostró 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 de datos de SQL Server se rellena y crea un archivo CSV en tres pasos:

  1. Obtener datos de SQL Server.
  2. Rellenar datos en una tabla de datos.
  3. Crear un archivo CSV a partir de esa tabla de datos.

Es muy fácil crear un archivo CSV en .NET 7 usando IronXL, como se demostró anteriormente. El rendimiento del programa es excepcional ya que está escrito en .NET 7 con IronXL. IronXL ofrece otras características útiles, como crear, leer y manipular archivos Excel. Para más detalles, por favor 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, agregar códigos de barras, mejorar la seguridad con contraseñas programáticamente.

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

  1. IronXL, que se explora hoy.
  2. IronPDF para generar, leer y manipular archivos PDF
  3. IronOCR para trabajar extrayendo texto de imágenes
  4. IronBarcode para leer y generar códigos de barras
  5. IronWebScraper para extraer datos estructurados de sitios web.

Puede obtener todos estos productos por el precio de dos si se compran juntos.

Preguntas Frecuentes

¿Cómo puedo convertir un conjunto de datos de C# a un archivo CSV?

Puedes convertir un conjunto de datos de C# a un archivo CSV usando IronXL. Primero, recupera los datos desde una fuente, como una base de datos SQL Server, y pueblalos en una DataTable. Luego, usa IronXL para exportar la DataTable a un archivo CSV.

¿Necesito Microsoft Office para trabajar con archivos Excel en .NET?

No, no necesitas Microsoft Office para trabajar con archivos Excel en .NET cuando usas IronXL. IronXL opera independientemente sin requerir dependencias de Office o Interop.

¿Cuál es la mejor forma de instalar IronXL para manejar hojas de cálculo en .NET?

La mejor forma de instalar IronXL para manejar hojas de cálculo es a través de la Consola del Administrador de Paquetes NuGet en Visual Studio. Usa el comando: Install-Package IronXL.Excel.

¿Cómo mejora IronXL la productividad al trabajar con hojas de cálculo?

IronXL mejora la productividad al permitir a los desarrolladores leer, generar y editar rápida y fácilmente archivos Excel y CSV dentro de aplicaciones .NET, sin necesidad de instalaciones de software o dependencias adicionales.

¿Puedo usar IronXL para generar archivos CSV desde cualquier fuente de datos?

Sí, puedes usar IronXL para generar archivos CSV desde cualquier fuente de datos. El artículo demuestra esto al utilizar una base de datos SQL Server para poblar una DataTable, que luego es exportada a CSV usando IronXL.

¿Es IronXL compatible con las últimas versiones de .NET?

Sí, IronXL es compatible con las últimas versiones de .NET, incluyendo .NET 7, y ofrece beneficios de rendimiento mejorados en estas plataformas.

¿Cuáles son los principales beneficios de usar IronXL para tareas de hojas de cálculo?

Los principales beneficios de usar IronXL incluyen su habilidad para manejar hojas de cálculo sin Microsoft Office, su soporte para todas las versiones de .NET y su simplicidad en la conversión de conjuntos de datos a archivos CSV de manera eficiente.

¿Qué es el Iron Suite y qué incluye?

El Iron Suite es una colección de bibliotecas que incluye IronXL para archivos Excel, IronPDF para PDFs, IronOCR para extracción de texto de imágenes, IronBarcode para códigos de barras y IronWebScraper para extracción de datos web.

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