jueves, 18 de octubre de 2012

Crear excel desde asp, web, c#

             Después de hace tiempo sin publicar nada, por fin me llego la inspiración, mentira jeje, eh tenido algo de trabajo, y  adquiriendo nuevos conocimientos de los cuales estoy gusto a compartir con ustedes, pues bien vamos al grano.

¿Se han topado con la necesidad de crear un Excel desde web? si es así, supongo que han probado con interop la vendita herramienta que nos da Microsoft, que si bien le e utilizado en varias ocasiones en aplicaciones de escritorio mas que nada, donde no existe ningún problema, pues bien al querer hacerlo nos topamos con muchos problemas de seguridad y configuración que no nos lo permiten, bueno a mi en lo personal eh tratado de echar a andar esa herramienta en un server 2008 sin éxito.

Pues bien después de buscar por mucho tiempo y haciendo investigación sobre las nuevas tecnologías que van saliendo, pude diseñar una dll para poder realizar el cometido con éxito, Tomando en cuenta que solo trabaja con archivos xlsx es decir versión de office 2010 en adelante.

Pues bien  les describiré las características de la herramienta que cree brevemente.

  • Trabaja sobre una plantilla, no necesaria mente pero en este caso lo utilicé así por cuestiones de un requerimiento en mi trabajo. puede ser un archivo en blanco siempre y cuando este en un lugar de la pc y claro se tenga acceso.
  • El uso de la herramienta es sencilla recibe una lista que igual ofrece la dll con los siguientes datos. 
    • Se inicializa una hoja en la cual se va a trabar, ejemplo Hoja 1, sheet 1 .
    • Como en interop se trabaja con posición, es decir se le envía la posición en la cual queremos trabajar, Ejemplo A1.
    • Se le envía el texto a mostrar en la celda tomando en cuenta que pueden ser valores numéricos, texto y formulas, en las formulas soporta cualquiera ejemplo (=Sum(A1:B1)
    • Recibe como parámetro el tipo de texto, 1 para string, 2 para numérico y 3 para formula.
  • Podrán encontrar la descripción de la explicación en forma de código mas adelante, ahora bien para inicializar el llamado, es como instancias una clase, y asignarle los parámetros que necesita.
      
Para utilizar esta herramienta solo basta con importarla al proyecto la dll y hacer la referencia con el código 

Using CreaExcel;

CreaExcel.CreaExcel  reporte = new CreaExcel.CreaExcel ("nombre archivo.xlsx", "c:\reportes", "nombre templete.xlsx");
Una vez creado el archivo procedemos  a hacer el llenado del Excel, para ello utilizamos la clase DatosExcel que contiene la dll
Declaramos primero una lista de tipo DatosExcelya que la función que trae reporte recibe una lista con las posiciones, texto y tipo de dato.
 
List<DatosExcel> listadatos = new List<DatosExcel>();

Luego declaramos una variable de tipo DatosExcelesto lo tendremos que hacer por cada celda, ahora si la información viene de un dataset o de una consulta, podemos meter esto en un ciclo e ir ingresando los datos hasta tener la lista llena.

 DatosExcel listdatos = new DatosExcel();
 listdatos.Hoja = "Hoja1";
 listdatos.Posicion = "A1";
 listdatos.Texto = "Ejemplo"; //  listdatos.Texto = "=SUM(A1:B1)" //  listdatos.Texto = 12345
 listdatos.Tipo = 1;                 //  listdatos.Tipo=3                             //  listdatos.Tipo = 2
 listadatos.Add(listdatos)

Una vez llenada la lista procedemos a crear el reporte con la variable antes creada reporte de tipo CreaExcel.CreaExcel.

Solo accedemos al método CreateReport y pasamos la lista con los valores a ingresar. Este método regresa la ruta donde se creo el archivo.

reporte.CreateReport(listadatos);

Este método viene sobrecargado, ya que en el caso de utilizar plantillas como fue mi caso, que necesitaba una grafica y ciertos cálculos que no fue necesario ordenar desde la creación, se sobrecarga con otra lista.

List<DatosExcel> Actualizadatos = new List<DatosExcel>();

Donde por ejemplo, supongamos que llenamos la celda A1 a la C1, con los valores numéricos 10, 23,50, si utilizamos la llamada con un solo parámetro, tendríamos que poner un elemento mas en la lista indicando una suma “=SUM (A1:C1)” en la celda D1 de tipo 3, pues bien si tenemos ya una plantilla donde en la celda D1 tiene ya la formula indicada de suma, con la lista Actualizadatos solo basta con agregarle un elemento con la hoja de trabajo y la posición donde se encuentra la formula, esto actualizara la formula y ara que se ejecute.
 listdatos = new DatosExcel();
 listdatos.Hoja = "Hoja1";
 listdatos.Posicion = "A1";
Actualizadatos.Add(listdatos);


 Y de esta forma hacemos el llamado para poder llenar los datos sobre la plantilla.
reporte.CreateReport(listadatos, Actualizadatos);

        Aqui el link de descarga de la dll, espero les sea Util.
Descarga haciendo clic aqui.
Aqui (Nuevo Link)



Si tienen alguna duda o comentario no olviden dejarlo en el apartado correspondiente.

Saludos cordiales y disculpen la ausencia!

3 comentarios:

  1. Hola estimado, estaban tratando de descargar el archivo adjunto, pero no puedo descargarlo. Por favor a ver como podriamos hacer para descargarlo. Gracias

    ResponderEliminar
    Respuestas
    1. En donde dice "Descarga haciendo clic aqui", dale clic sobre el texto debe de abrirte la descarga.

      Saludos!

      Eliminar
  2. Hola que tal estoy viendo que esta muy buena tu explicacion y quiero descargar el dll y no me deja, espero puedas ayudarme gracias

    ResponderEliminar