Exportar DataTable a diferentes formatos Javier Suárez Ruiz

16
Exportar DataTable a diferentes formatos Javier Suárez Ruiz Índice: - Introducción. - Response. - ¿Qué es? - Métodos Principales. - ¿Cómo exportar?. - Exportar a documentos MS Office ( Word,Excel,PowerPoint) - Exportar a pdf ( Adobe Reader). - Bibliografía.

description

Exportar DataTable a diferentes formatos Javier Suárez Ruiz. Índice: Introducción. Response. - ¿Qué es? - Métodos Principales. - ¿Cómo exportar?. - Exportar a documentos MS Office ( Word,Excel,PowerPoint) - Exportar a pdf ( Adobe Reader). - PowerPoint PPT Presentation

Transcript of Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Page 1: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar DataTable a diferentes formatos

Javier Suárez Ruiz

Índice:- Introducción.- Response. - ¿Qué es? - Métodos Principales.

- ¿Cómo exportar?.- Exportar a documentos MS Office ( Word,Excel,PowerPoint)- Exportar a pdf ( Adobe Reader).

- Bibliografía.

Page 2: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Introducción Microsoft Office (MSO) es una suite ofimática,

compuesta básicamente por aplicaciones de procesamiento de textos ( Word ), plantilla de cálculo ( Excel ) y programa para presentaciones ( PowerPoint) .

PDF ( Portable Document Format ) es un formato de almacenamiento de documentos, desarrollado por la empresa Adobe Systems. Este formato es de tipo compuesto (imágenes y texto).

Page 3: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Response. ¿ Qué es ?.

Este objeto ASP es del tipo integrado, es decir no tenemos que crear una instancia del mismo para poder utilizarlo, su función es enviar información al cliente (navegador).

Page 4: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Response. Métodos Principales. Response.Write (cadena). Envía la cadena de caracteres al cliente.

Response.Redirect (Url). Redirige la página ASP a la URL especificada.

Response.Flush. Envía de inmediato los datos del buffer.

Response.Clear. Borra los datos del buffer.

Response.AddHeader. Se pueden mandar más tipos de encabezamientos del http como la fecha de modificación del documento (LAST-MODIFIED) o el tiempo en el que se tiene que realizar un refresco de la página (REFRESH).

Response.Cache.SetCacheability. Nos van a permitir definir si queremos que no se traiga las páginas de caché y en vez de ello se vuelven a traer desde el servidor

( refrescando las variables y sessiones ) o si nos decidimos a usar la cache.

Page 5: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Response. Métodos Principales. Response.ContentType("String").Es una propiedad que

especifica el tipo de contenido del request HTTP, que puede incluir un tipo/subtipo en la cabecera de la respuesta. El tipo siempre es de contenido general y el subtipo es específico. El valor por defecto es text/HTML.

Response.End. Método que detiene la ejecución de la página, la

termina.

Response.Buffer. Es una propiedad que si está a true (la opción por defecto en ASP 3.0) indica al servidor que debe utilizar el buffer. Si está a false (opción por defecto para versiones anteriores de ASP) no lo utiliza.

Page 6: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a MS Excel//Se carga el contenido del archivo en memoria antes de enviarlo al cliente Response.Clear();//Damos la salida como attachment .Response.AddHeader("content-disposition", "attachment;filename=archivo.xls");Response.Charset = "";Response.Cache.SetCacheability(HttpCacheability.NoCache);//Especificamos el tipo de salida. Response.ContentType = "application/vnd.xls";/**

Para obtener el contenido HTML de un control ( en este caso un gridview) se utiliza el método RenderControl, el cual acepta un HtmlTextWriter como parámetro, y sobre el cual se realiza el reenderezado. Para obtener el HtmlTextWriter lo que hago es crear primero un StringBuilder, un StringWriter sobre éste, y finalmente un HtmlTextWriter que trabaje sobre el StringWriter.

*///StringWriter Nos permite escribir información en una cadena.System.IO.StringWriter stringWrite = new System.IO.StringWriter();// HtmlTextWriter Escribe caracteres de marcado y texto en una secuencia de salida de un control

de servidor ASP.NET. Esta clase proporciona funciones de aplicación de formato.System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);ContenidoGridView().RenderControl(htmlWrite);//Escribimos el HTML en el Explorador Response.Write(stringWrite.ToString());//Terminamos el Response. Response.End();

Page 7: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

P.I.A ( Primary Interop Assemblies )

Los ensamblados de interoperabilidad COM permiten que el código no administrado (COM) se llame desde código administrado (.NET) mediante Microsoft .NET Framework y el módulo de tiempo de ejecución de lenguaje común.

Los ensamblados de interoperabilidad los puedes descargar en :

http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&displaylang=en

Los ensamblados de interoperabilidad proporcionar un montón de opciones para trabajar con datos de Excel, tanto de lectura y escritura, permitiéndonos exportar ó crear archivos Excel con facilidad.

Page 8: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a MS Excel ( 2 formas )

Ejemplo 1

Page 9: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a MS Word//Se carga el contenido del archivo en memoria antes de enviarlo al cliente Response.Clear();//Damos la salida como attachment .Response.AddHeader("content-disposition",

"attachment;filename=archivo.doc");Response.Charset = "";Response.Cache.SetCacheability(HttpCacheability.NoCache);//Especificamos el tipo de salida. Response.ContentType = "application/vnd.doc";System.IO.StringWriter stringWrite = new System.IO.StringWriter();System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);ContenidoGridView().RenderControl(htmlWrite);//Escribimos el HTML en el Explorador Response.Write(stringWrite.ToString());//Terminamos el Response. Response.End();

Page 10: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a MS PowerPoint//Se carga el contenido del archivo en memoria antes de enviarlo al cliente Response.Clear();//Damos la salida como attachment .Response.AddHeader("content-disposition",

"attachment;filename=archivo.ppt");Response.Charset = "";Response.Cache.SetCacheability(HttpCacheability.NoCache);//Especificamos el tipo de salida. Response.ContentType = "application/vnd.ppt";System.IO.StringWriter stringWrite = new System.IO.StringWriter();System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);ContenidoGridView().RenderControl(htmlWrite);//Escribimos el HTML en el Explorador Response.Write(stringWrite.ToString());//Terminamos el Response. Response.End();

Page 11: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a MS Word y MS PowerPoint

Ejemplo 2

Page 12: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a pdf ( Adobe Reader).

¿Que es iTextSharp? iTextSharp, es una *.dll que nos brinda ciertas

funcionalidades que nos ayudarán en la creación de documentos txt, rtf, doc, pdf, html y xml, como también poder agregar algunas propiedades con valores como fuente, márgenes, tamaño de página, estilo de página, presentación inicial...

No menos importante destacar que se trata de un proyecto de código abierto, es decir, esta librería es totalmente gratuita.

Page 13: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a pdf ( Adobe Reader).

¿ Cómo crear un documento PDF ?

Document document = new Document();PdfWriter.GetInstance(document,new FileStream(“archivo.pdf",FileMode.OpenOrCreate));document.Open();document.Add(new Paragraph("Este es mi primer PDF al

vuelo"));document.Close();

Page 14: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a pdf ( Adobe Reader).

Con esto ya tenemos nuestro primer PDF.

Creamos un objeto de tipo Document. Es nuestro PDF.

Invocamos al método estático GetInstance de la clase PdfWriter - como argumentos recibe el documento que acabamos de crear y un Stream. En este caso utilizamos un FileStream pero podríamos haber usado cualquier Stream que admita escritura como por ejemplo MemoryStream. 

Abrimos el documento con el método Open.

Le añadimos un párrafo con Add. Debemos darnos cuenta que el método Add recibe como parámetro una interface -IElement. Esto nos va a simplificar enormemente el trabajo.

Cerramos el documento con Close.

¡Que difícil! Con esto ya tenemos creado el archivo en la ruta indicada al FileStream (en mi caso la misma ruta que el ejecutable).

Page 15: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Exportar a Adobe Reader

Ejemplo 3

Page 16: Exportar DataTable a diferentes formatos Javier Suárez Ruiz

Bibliografía En Español:http://www.mistrucos.net/truco-asp-net-exportar-datagrid-excel-609.htm Tutorial que nos explica como exportar un datagrid a un archivo excel utlizando el objeto response. Buen ejemplo, aunque teoricamente escaso.

http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/habia-una-ves.aspxTutorial que nos explica como exportar un dataTable a excel basandose en los ensamblados de interoperabilidad. Buen ejemplo, aunque teoricamente escaso.

En Inglés:

http://www.aspnetpro.com/NewsletterArticle/2003/09/asp200309so_l/asp200309so_l.asp Genial tutorial que nos explica muy detalladamente como exportar un dataTable a Excel.Completo teóricamente y buenos ejemplos.