Exportar DataTable a formato PDF

Para realizar dicha tarea utilizaremos una librería Open Source y por la tanto totalmente gratuita llamada 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…

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

Con el código anterior ya tenemos creado nuestro documento PDF. Vamos a analizar dicho código para entender mejor que hemos hecho exactamente.

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

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

Anuncios

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