es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Guardar archivo de Excel en formato CSV sin abrirlo en .NET Core 3.1.

Tengo una situación en la que necesito descargar y guardar un archivo de Excel (.xlsx) en formato .CSV en una aplicación de consola .Net core.

Dado que los paquetes de Microsoft.Interop no son compatibles con .Net core 3.1, ¿qué otro enfoque puedo usar para guardar un archivo de Excel como .CSV?

Agradezco las sugerencias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una aproximación que puedes intentar es usar una librería de terceros como EPPlus o NPOI para leer el contenido del archivo de Excel y luego escribirlo en un archivo CSV. Ambas librerías son compatibles con .NET Core y tienen APIs para trabajar con archivos de Excel.

    Estos son los pasos que puedes seguir:

    1. Instala la librería EPPlus o NPOI utilizando el gestor de paquetes NuGet.
    2. Abre el archivo de Excel utilizando la librería y lee el contenido en una estructura de datos (como un DataTable o una Lista).
    3. Escribe el contenido de la estructura de datos en un archivo CSV utilizando una librería como CsvHelper.

    Aquí hay un ejemplo de código para usar EPPlus:

    using OfficeOpenXml;
    using CsvHelper;
    using System.IO;
    
    // Abre el archivo de Excel usando EPPlus
    using var package = new ExcelPackage(new FileInfo("miArchivoExcel.xlsx"));
    var worksheet = package.Workbook.Worksheets[0];
    
    // Lee el contenido del archivo de Excel en un DataTable
    var dataTable = new DataTable();
    bool firstRow = true;
    foreach (var cell in worksheet.Cells)
    {
        if (firstRow)
        {
            dataTable.Columns.Add(cell.Value.ToString());
        }
        else
        {
            var row = dataTable.NewRow();
            for (int i = 0; i < dataTable.Columns.Count; i++)
            {
                row[i] = worksheet.Cells[cell.Start.Row, i + 1].Value?.ToString();
            }
            dataTable.Rows.Add(row);
        }
        firstRow = false;
    }
    
    // Escribe el contenido del DataTable en un archivo CSV usando CsvHelper
    using var writer = new StreamWriter("miArchivoCsv.csv");
    using var csv = new CsvWriter(writer);
    csv.WriteRecords(dataTable);
    

    Este código abre un archivo de Excel utilizando EPPlus, lee el contenido de la primera hoja de trabajo en un DataTable y escribe el contenido del DataTable en un archivo CSV utilizando CsvHelper.

Comments are closed.