原創(chuàng)|其它|編輯:郝浩|2012-08-16 20:45:37.000|閱讀 2612 次
概述:許多開(kāi)發(fā)人員都在為如何完整的導(dǎo)出Excel或者Word這個(gè)問(wèn)題感到煩惱。所以選擇一種有效的方式就顯得尤為重要,今天要提到了就是Aspose組件,不僅可以導(dǎo)出Excel還能導(dǎo)出Word以及其他不同格式。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
許多開(kāi)發(fā)人員在導(dǎo)出Excel或者Word經(jīng)常使用的方法就是畫(huà)網(wǎng)頁(yè),比如使用GridView編寫(xiě)代碼導(dǎo)出Excel,不僅不能改變Excel單元的大小,而且排版的效果也是雜亂不整齊的,導(dǎo)出Word時(shí)也是如此,相信大家都在為這個(gè)問(wèn)題感到煩惱。所以選擇一種有效的方式就顯得尤為重要,今天要提到了就是Aspose組件,不僅可以導(dǎo)出Excel還能導(dǎo)出Word以及其他不同格式。Aspose.Words下載
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Buffer = true;
System.Web.HttpContext.Current.Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
System.Web.HttpContext.Current.Response.Write("<head>");
System.Web.HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");//解決中文亂碼問(wèn)題,導(dǎo)出數(shù)據(jù)在20行內(nèi)容易出現(xiàn)亂碼
System.Web.HttpContext.Current.Response.Write("<!--[if gte mso 9]><xml>");
System.Web.HttpContext.Current.Response.Write("<x:ExcelWorkbook>");
System.Web.HttpContext.Current.Response.Write("<x:ExcelWorksheets>");
System.Web.HttpContext.Current.Response.Write("<x:ExcelWorksheet>");
System.Web.HttpContext.Current.Response.Write("<x:Name>sheet1</x:Name>");
System.Web.HttpContext.Current.Response.Write("<x:WorksheetOptions>");
System.Web.HttpContext.Current.Response.Write("<x:Print>");
System.Web.HttpContext.Current.Response.Write("<x:ValidPrinterInfo/>");
System.Web.HttpContext.Current.Response.Write("</x:Print>");
System.Web.HttpContext.Current.Response.Write("</x:WorksheetOptions>");
System.Web.HttpContext.Current.Response.Write("</x:ExcelWorksheet>");
System.Web.HttpContext.Current.Response.Write("</x:ExcelWorksheets>");
System.Web.HttpContext.Current.Response.Write("</x:ExcelWorkbook>");
System.Web.HttpContext.Current.Response.Write("</xml>");
System.Web.HttpContext.Current.Response.Write("<![endif]--> ");
我們需要導(dǎo)出如下圖樣式的Word:(由于示例中的報(bào)表是內(nèi)部報(bào)表,所以圖片做了相應(yīng)處理,代碼部分也已經(jīng)盡量詳細(xì),不影響最后效果)
首先我們需要先建立模板,只需在Word里面插入域得到如下圖效果。簡(jiǎn)單說(shuō)明一下<TableStart:All> 是表示從名為All的 DataTable 里面獲取數(shù)據(jù) <TableEnd:All>就是結(jié)束的位置,中間的<jylx> <my> 之類(lèi)的都是名為All這個(gè)的DataTable的列名.中間還有另外一個(gè)<TableStart:Item> <TableStart:Item> 同理這個(gè)是名為Item的DataTable 他們中間的<mc> <sl>就是Item這個(gè)表的列名。
下面在介紹一下代碼的編寫(xiě),首先構(gòu)造一個(gè)DataSet包含兩個(gè)DataTable一個(gè)叫All 一個(gè)叫Item..添加代碼大致如下,之后就是填充這2個(gè)DataTable即可。
private DataSet GetOneDs()
{
DataTable dt1 = new DataTable("All");
dt1.Columns.Add("jylx");
dt1.Columns.Add("my");
dt1.Columns.Add("mc");//
dt1.Columns.Add("mz");//
dt1.Columns.Add("mjz");//
//dt1.Columns.Add("mqt");//其他
dt1.Columns.Add("sjbm");//
dt1.Columns.Add("yqwcrq");//要求完成日期
dt1.Columns.Add("jyyj");//檢驗(yàn)依據(jù)
dt1.Columns.Add("szq");//自取
dt1.Columns.Add("sdzwd");//電子文檔
dt1.Columns.Add("sqt");//其它
dt1.Columns.Add("ztwz");//完整
dt1.Columns.Add("ztqx");//缺陷
dt1.Columns.Add("ztms");//描述
dt1.Columns.Add("sjbmfzr");//送檢部門(mén)負(fù)責(zé)人
dt1.Columns.Add("syrrq");//送檢人/日期
dt1.Columns.Add("jybmfzr");//檢測(cè)部門(mén)負(fù)責(zé)人
dt1.Columns.Add("jyrrq");//接樣人/日期
DataRow dr1 = dt1.NewRow();
dr1["my"] = "□";//
dr1["mc"] = "□";//
dr1["mz"] = "□";//
dr1["mbz"] = "□";//
dr1["ztwz"] = "□";//完整
dr1["ztqx"] = "□";//缺陷
dr1["sdzwd"] = "□";//完整
dr1["szq"] = "□";//缺陷
dt1.Rows.Add(dr1);
DataTable dt2 = new DataTable("Item");
dt2.Columns.Add("bh");
dt2.Columns.Add("mc");
dt2.Columns.Add("sl");
dt2.Columns.Add("rq");
DataSet ds = new DataSet();
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
return ds;
}
最后只要根據(jù)DataSet填充模板輸出即可,代碼如下:
Document doc = new Document(strPath);
doc.MailMerge.ExecuteWithRegions(ds);
doc.Save(Page.Response, "C010.doc", ContentDisposition.Attachment, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)