利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
我們知道,一般都導出的Word文檔或者Excel文檔,基本上分為兩類,一類是動態(tài)生成全部文檔的內容方式,一種是基于固定模板化的內容輸出,后者在很多場合用的比較多,這也是企業(yè)報表規(guī)范化的一個體現(xiàn)。
我的博客介紹過幾篇關于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示。
《使用Aspose.Cell控件實現(xiàn)Excel高難度報表的生成(一)》
《使用Aspose.Cell控件實現(xiàn)Excel高難度報表的生成(二)》
《使用Aspose.Cell控件實現(xiàn)Excel高難度報表的生成(三)》
《使用Aspose.Cell控件實現(xiàn)多個Excel文件的合并》
以及關于Word的操作的《利用Aspose.Word控件實現(xiàn)Word文檔的操作》
這些都是我本人的總結,是實實在在的從項目中來,到博客中去的經驗總結,本篇主要介紹在Web的模板化文檔輸出中,Aspose.Word控件和Aspose.Cell控件的使用操作。
1、Word模板化的文檔導出
模板化的輸出,首先是在預定義好固定的模板,然后綁定數(shù)據(jù)源或者替換相關的文字實現(xiàn)模板化文檔的導出操作。
在Aspose.Word的操作對象中,我們可以使用文本替換的方式實現(xiàn)模板內容的修改,簡單的操作如下所示。
Document doc = new Document(MyDir + "Document.doc"); doc.Range.Replace("wuhuacong", "伍華聰", false, true);也可以以書簽引用替換的方式實現(xiàn),首先要定義好相應的標簽引用,操作如下。
在一個Word文檔中某固定位置插入一個標簽引用,在Word(2007、2010)的【插入】-【書簽】中插入指定位置的書簽引用,如下所示。
替換標簽內容的代碼如下所示。
Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["ACCUSER_SEX"];if (bookmark != null){bookmark.Text = "男";}為了較好展示操作效果,我們先來固定一個Word的模板文檔,如下所示。
實現(xiàn)模板化的文檔導出,我這里結合兩種方式實現(xiàn)內容的替換操作,一個是使用文字替換,一個是使用標簽引用,兩部分的代碼如下所示。
protected void btnGenWord_Click(object sender, EventArgs e){Dictionary<string, string> dictSource = new Dictionary<string, string>();dictSource.Add("TIS_HANDLE_NO", "T0001");dictSource.Add("ACCUSE_INDUSTRY", "出租車");dictSource.Add("ACCUSER_NAME", "張三");string templateFile = Server.MapPath("./Templates/Advice.doc");Aspose.Words.Document doc = new Aspose.Words.Document(templateFile);//使用文本方式替換foreach (string name in dictSource.Keys){ doc.Range.Replace(name, dictSource[name], true, true);}#region 使用書簽替換模式Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["ACCUSER_SEX"];if (bookmark != null){bookmark.Text = "男";}bookmark = doc.Range.Bookmarks["ACCUSER_TEL"];if (bookmark != null){bookmark.Text = "1862029207*";} #endregiondoc.Save(Response, "testAdvice.doc", Aspose.Words.ContentDisposition.Attachment,Aspose.Words.Saving.SaveOptions.CreateSaveOptions(Aspose.Words.SaveFormat.Doc));}基于Asp.NET的界面如下所示。
生成的模板化文檔如下所示,整個文檔是基于固定模板輸出,因此比較標準和統(tǒng)一化。
2、Aspose.Cell模板化的文檔導出
Aspose.Cell的模板化文檔也是類似,也有兩種方式可以操作,一種是替換文本,一種是綁定數(shù)據(jù)源的方式實現(xiàn),具體可以參考一下我前面的列出隨筆,對于Apsose.Cell來說,綁定數(shù)據(jù)源的功能非常強大。
綁定數(shù)據(jù)源是通過在模板中設置變量對象方式,變量對象是通過&=來引用,對象的屬性或者列名,通過如&=Customer.City方式引用,非常直觀方便。
這種方式的變量對象支持簡單對象,如下所示。
?
也支持復雜的集合對象,如下所示。
為了演示模板化的文檔導出,我這里設計了一個固定的Excel模板,通過兩種方式實現(xiàn)數(shù)據(jù)的替換,先定義Excel模板如下所示。
后臺綁定數(shù)據(jù)的代碼如下所示。
protected void btnGenExcel_Click(object sender, EventArgs e){Dictionary<string, string> dictSource = new Dictionary<string, string>();dictSource.Add("TIS_HANDLE_NO", "T0001");dictSource.Add("ACCUSE_INDUSTRY", "出租車");dictSource.Add("ACCUSER_NAME", "張三");string templateFile = Server.MapPath("./Templates/Advice.xls");WorkbookDesigner designer = new WorkbookDesigner();designer.Open(templateFile);Aspose.Cells.Worksheet worksheet = designer.Workbook.Worksheets[0];//使用文本替換foreach (string name in dictSource.Keys){ worksheet.Replace(name, dictSource[name]);}//使用綁定數(shù)據(jù)方式替換designer.SetDataSource("ACCUSER_SEX", "男");designer.SetDataSource("ACCUSER_TEL", "1862029207*");designer.Process();designer.Save("testAdvice.xls", SaveType.OpenInExcel, FileFormatType.Excel2003, Response);}?
以上就是使用Aspose.Word控件和Aspose.Cell控件,實現(xiàn)Word文檔和Excel文檔的模板化導出的相關操作過程及代碼,希望對大家有幫助,也作為我的一個總結,以后參考,呵呵,歡迎互相溝通研究。
轉載于:https://www.cnblogs.com/BrokenIce/p/5994973.html
總結
以上是生活随笔為你收集整理的利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL四种语言:DDL,DML,DCL,
- 下一篇: GO语言中json与map的转换