利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
我們知道,一般都導(dǎo)出的Word文檔或者Excel文檔,基本上分為兩類,一類是動態(tài)生成全部文檔的內(nèi)容方式,一種是基于固定模板化的內(nèi)容輸出,后者在很多場合用的比較多,這也是企業(yè)報表規(guī)范化的一個體現(xiàn)。
我的博客介紹過幾篇關(guān)于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示。
《使用Aspose.Cell控件實(shí)現(xiàn)Excel高難度報表的生成(一)》
《使用Aspose.Cell控件實(shí)現(xiàn)Excel高難度報表的生成(二)》
《使用Aspose.Cell控件實(shí)現(xiàn)Excel高難度報表的生成(三)》
《使用Aspose.Cell控件實(shí)現(xiàn)多個Excel文件的合并》
以及關(guān)于Word的操作的《利用Aspose.Word控件實(shí)現(xiàn)Word文檔的操作》
這些都是我本人的總結(jié),是實(shí)實(shí)在在的從項(xiàng)目中來,到博客中去的經(jīng)驗(yàn)總結(jié),本篇主要介紹在Web的模板化文檔輸出中,Aspose.Word控件和Aspose.Cell控件的使用操作。
1、Word模板化的文檔導(dǎo)出
模板化的輸出,首先是在預(yù)定義好固定的模板,然后綁定數(shù)據(jù)源或者替換相關(guān)的文字實(shí)現(xiàn)模板化文檔的導(dǎo)出操作。
在Aspose.Word的操作對象中,我們可以使用文本替換的方式實(shí)現(xiàn)模板內(nèi)容的修改,簡單的操作如下所示。
Document doc = new Document(MyDir + "Document.doc"); doc.Range.Replace("wuhuacong", "伍華聰", false, true);也可以以書簽引用替換的方式實(shí)現(xiàn),首先要定義好相應(yīng)的標(biāo)簽引用,操作如下。
在一個Word文檔中某固定位置插入一個標(biāo)簽引用,在Word(2007、2010)的【插入】-【書簽】中插入指定位置的書簽引用,如下所示。
替換標(biāo)簽內(nèi)容的代碼如下所示。
Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["ACCUSER_SEX"];if (bookmark != null){bookmark.Text = "男";}為了較好展示操作效果,我們先來固定一個Word的模板文檔,如下所示。
實(shí)現(xiàn)模板化的文檔導(dǎo)出,我這里結(jié)合兩種方式實(shí)現(xiàn)內(nèi)容的替換操作,一個是使用文字替換,一個是使用標(biāo)簽引用,兩部分的代碼如下所示。
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的界面如下所示。
生成的模板化文檔如下所示,整個文檔是基于固定模板輸出,因此比較標(biāo)準(zhǔn)和統(tǒng)一化。
2、Aspose.Cell模板化的文檔導(dǎo)出
Aspose.Cell的模板化文檔也是類似,也有兩種方式可以操作,一種是替換文本,一種是綁定數(shù)據(jù)源的方式實(shí)現(xiàn),具體可以參考一下我前面的列出隨筆,對于Apsose.Cell來說,綁定數(shù)據(jù)源的功能非常強(qiáng)大。
綁定數(shù)據(jù)源是通過在模板中設(shè)置變量對象方式,變量對象是通過&=來引用,對象的屬性或者列名,通過如&=Customer.City方式引用,非常直觀方便。
這種方式的變量對象支持簡單對象,如下所示。
?
也支持復(fù)雜的集合對象,如下所示。
為了演示模板化的文檔導(dǎo)出,我這里設(shè)計(jì)了一個固定的Excel模板,通過兩種方式實(shí)現(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控件,實(shí)現(xiàn)Word文檔和Excel文檔的模板化導(dǎo)出的相關(guān)操作過程及代碼,希望對大家有幫助,也作為我的一個總結(jié),以后參考,呵呵,歡迎互相溝通研究。
轉(zhuǎn)載于:https://www.cnblogs.com/BrokenIce/p/5994973.html
總結(jié)
以上是生活随笔為你收集整理的利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL四种语言:DDL,DML,DCL,
- 下一篇: GO语言中json与map的转换