Dalla versione 2000 Word supporta l'importazione di documenti in formato HTML come se fossero documenti salvati in uno dei formati che è supportato direttamente.
Questo permette di creare facilmente dei report completi anche dal punto di vista grafico, semplicemente formattando a dovere l'HTML.
In questo esempio viene recuperato l'HTML generato dal DataGrid e tramite il cambio di ContentType e l'aggiunta di una header viene richiamato Word.
<%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <SCRIPT language="C#" runat="server"> // stringa di conn string connstring = @"server=localhost;database=pubs;trusted_connection=true;"; void Page_Load () { // cambio del content type e delle header Response.ContentType = "application/msword"; Response.AddHeader("content-disposition", "inline; filename=report.doc"); Response.Clear(); // estrazione dati getWordHtml(myDG); Response.End(); } // routine di estrazione dati void getWordHtml (DataGrid dg) { // connessione using (SqlConnection conn = new SqlConnection(connstring)) { SqlDataAdapter query = new SqlDataAdapter("SELECT * FROM titles", conn); // creo il dataset DataSet querydataset = new DataSet(); query.Fill(querydataset); dg.DataSource = querydataset; dg.DataBind(); } // creo gli oggetti necessari a leggere il codice HTML string html = String.Empty; using (StringWriter stringWriter = new StringWriter()) using (HtmlTextWriter sourcecode = new HtmlTextWriter(stringWriter)) { // catturo il codice HTML e lo salvo in una stringa dg.RenderControl(sourcecode); sourcecode.Flush(); html = stringWriter.ToString(); } // risultato finale Response.Write(html); } </SCRIPT> <form runat="server" visible="false"> <ASP:DataGrid id="myDG" runat="server" HeaderStyle-BackColor="#336699" HeaderStyle-Font-Size="Large" ItemStyle-BackColor="lightsteelblue" AlternatingItemStyle-BackColor="lightgray" /> </form>
Il codice può essere adattato a qualsiasi web control, anche all'intera pagina.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.