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.
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).
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).
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.
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.
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();
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=3C9
A983A-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.
Exportar a MS Excel ( 2 formas )
Ejemplo 1
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();
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();
Exportar a MS Word y MS PowerPoint
Ejemplo 2
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.
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();
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).
Exportar a Adobe Reader
Ejemplo 3
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.aspx
Tutorial 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.
Descargar

Exportar DataTable a diferentes formatos