miércoles, 27 de septiembre de 2017

Convertir xlsx & xls a csv con ExcelDataReader



En este artículo voy a tratar de explicar cómo utilizar la biblioteca ExcelDataReader para la conversión simple de archivos, en particular Excel para CSV. Convierta fácilmente sus archivos Excel 97-2003 (.xls) o 2007 (.xlsx) en archivos simples de valores separados por comas (.csv).

Dado que CSV es un archivo de flujo simple, es más fácil tratar con los datos del archivo. Recuerda que los datos CSV también se pueden ver como una hoja de Excel.

Bueno, manos a la obra...
El objetivo concreto es leer los datos de un archivo Excel en el programa y convertirlo en un formato fácil de operar que es CSV; utilizando la librería ExcelDataReader. Todo esto en .NET para este caso. ( creo que pronto publico una versión Java correspondiente ).

Primer paso es agregar las referencias de la biblioteca ExcelDataReader a su proyecto ( Buscar en Nuget ExcelDataReader )



Aqui te dejo el video con la implementacion del código




De cualquier manera tambien te pongo aquí la implementación del código.

private void ExcelToCsv()
        {
            try
            {
                // crear el stream del archivo xlxs o xls existente
                FileStream stream = File.Open("C:\\HistoricoChat.xlsx", FileMode.Open, FileAccess.Read);

                // Reading from a binary Excel file ('97-2003 format; *.xls)
                // IExcelDataReader excelReaderXls = ExcelReaderFactory.CreateBinaryReader(stream);

                // Reading from a OpenXml Excel file (2007 format; *.xlsx)
                IExcelDataReader excelReaderXlsx = ExcelReaderFactory.CreateOpenXmlReader(stream);

                string csvData = string.Format("{0},{1},{2},{3},{4}", "N. PROVEEDOR", "NOMBRE PROVEEDOR", "FECHA", "MOTIVO DE AYUDA", "DURACION CHAT");             
                int row = 0;
                while (excelReaderXlsx.Read())
                {
                    if (row > 0)
                        csvData += string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\"",
                            excelReaderXlsx.GetValue(0),    // proveedor id
                            excelReaderXlsx.GetString(1),   // proveedor
                            excelReaderXlsx.GetString(2),   // fecha
                            excelReaderXlsx.GetString(3),   // motivo de ayuda
                            excelReaderXlsx.GetString(4));  // duracion chat

                    csvData += "\n";
                    row++;
                }

                // Free resources (IExcelDataReader is IDisposable)
                excelReaderXlsx.Close();

                // define tu propia salida de archivo csv ( en este caso lo mandé a mi unidad extraible )
                string output = "D:\\HistoricoChat.csv";
                StreamWriter csv = new StreamWriter(@output, false);
                csv.Write(csvData);
                csv.Close();
            }
            catch (Exception ex)
            {
                var exx = ex;
            }
        }



No hay comentarios.:

Publicar un comentario

Escribe tu comentario