Exportar DataTable a diferentes formatos

Vamos a aprender como exportar un DataTable a formatos como .doc, .ppt  ó .xls.

Exportar DataTable a Word, Excel y PowerPoint.

Para dicha tarea, utilizaremos el objeto Response.

El objeto 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).
Vamos a echar un vistazo a sus 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.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.
Llegado a este punto  te preguntarás porque estas leyendo tantísimo sobre el objeto Response, ¿verdad?.
La respuesta es sencilla, como ya se ha comentado con anterioridad, dicho objeto nos brindará todo lo necesario para exportar nuestro DataTable a Word,Excel ó PowerPoint.

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();

Con el código de la parte superior lograrías exportar un DataTable a Excel pero… ¿Cómo se exporta a otros formatos?

La respuesta es muy sencilla, probablemente mucho más de lo que estas imaginando.

Si te fijas en dos líneas del código anterior como son las siguientes:

<Response.AddHeader(“content-disposition”,                      “attachment;filename=archivo.xls”);
Response.ContentType = “application/vnd.xls”;

Podrás observar que en ellas se define el formato del fichero resultante, ¿verdad?.

Prueba a cambiar .xls por .doc ó .ppt y verás el resultado.

Para finalizar quizas os interese descarga una presentación powerpoint con un resumen de todo lo visto desde aquí.

Un pensamiento en “Exportar DataTable a diferentes formatos

  1. Hola amigo, mcuhisimas gracias por tu aporte, pero hay algo que no entiendo. que es esto?

    ContenidoGridView() (Un GridView,? Datatable? y por qué es invocado como metodo?)

    Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s