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.