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í.