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;
            }
        }



domingo, 17 de septiembre de 2017

El punto de interrupcion no se activara actualmente en visual studio

Trabajando un poco en un proyecto personal de desarrollo, me encontré con la novedad de que en mi visual studio 2015 no se me activa un punto de interrupción que puse en un método del cotroller, es decir ni si quiera es alcanzado ya que al parecer el código existente en modo de ejecución no es igual al de la version compilada. ( de alguna manera al compilar la solución, no se esta actualizando las propias librerias, dlls, etc ).

El mensaje dice que el punto de interrupción no se activará actualmente ya que el codigo fuente actual es distinto al de la versión compilada...

A este problema el propio visual studio me sugiere activar una condición en la configuración del punto de interrupción, para "permitir que el código fuente sea distinto del de la versión original"; solución que no me funcionó por cierto .... les muestro la imagen



Para quienes tengan esta situación pueden probar alguna de las siguientes opciones:


  1. Limpiar y generar de nuevo..
  2. Ir a Condiciones... Configuracion y Ubicacion y active 'Permite que el código fuente sea distinto del de la versión original.
  3. Volver a generar la carpeta local de la solucion eliminando la carpeta previamente.  ( en mi caso como utilizo TFS, lo que hice fue quitar la asignacion de la carpeta (recursivo) y luego cree la asignacion a mi local nuevamente ). Esta tercer opción fue la que me funcionó.


Despues de darle vueltas un rato y probar con la opcion 3 se solucionó el tema y pude ejecutar los breakpoint.   Saludos.



sábado, 19 de agosto de 2017

archivos de definición de informes del lado del cliente (rdlc)

Que es un archivo RDLC ?

RDLC es el acrónimo de Lenguaje de definición de informe del lado del cliente. Con estos, podemos crear informes de aspecto profesional.

El .rdlc es el formato de un archivo de informe que utiliza el sistema de notificación de Microsoft.
Principalmente Microsoft Visual Studio crea esta extensión de archivo rdlc que contiene las definiciones del informe.

Cual es la diferencia entre un RDL VS RDLC.

RDL = Reporte de Reporting Service (Si cuentas con reporting service)

RDLC = Reporte que no necesita Reporting Service. (Recomendado para web hosting)

Aqui un ejemplo en el visor de informes. Considerar que podemos exportar los reportes en distintos formatos.


¿Qué es SQL Server Reporting Services (SSRS)?

Voy a darles una introducción a la plataforma Microsoft para la generación de Informes

SQL Server Reporting Services ( SSRS ) es un sistema de software de generación de informe basado en un servidor de Microsoft . Es parte de la suite de servicios de Microsoft SQL Server, incluyendo SSAS ( SQL Server Analysis Services ) y SSIS ( SQL Server Integration Services ).

SQL Server Reporting Services es una solución que los clientes implementan en sus propias instalaciones para la creación, edición y gestión de informes, a continuación, su entrega a los usuarios adecuados en diferentes maneras, ya sea por el navegador web, en su dispositivo móvil, o como un correo electrónico en su bandeja de entrada.

Pronto estaré escribiendo varios post sobre todo lo que tiene que ver con generacion de reportes del lado de Microsoft ( Visual Studio rdl, rdlc ), diferencias, potencialidades, etc.