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.
Approfondimenti
Generare file PDF da Blazor WebAssembly con iText
Cache policy su route groups di Minimal API in ASP.NET Core 7
Load test di ASP.NET Core con k6
Implementare il throttling in ASP.NET Core
Short-circuiting della Pipeline in ASP.NET Core
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes