利用Aspose.Word控件和Aspose.Cell控件,實現Word文檔和Excel文檔的模板化導出


我們知道,一般都導出的Word文檔或者Excel文檔,基本上分為兩類,一類是動態生成全部文檔的內容方式,一種是基於固定模板化的內容輸出,后者在很多場合用的比較多,這也是企業報表規范化的一個體現。

我的博客介紹過幾篇關於Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示。

使用Aspose.Cell控件實現Excel高難度報表的生成(一)

使用Aspose.Cell控件實現Excel高難度報表的生成(二)

使用Aspose.Cell控件實現Excel高難度報表的生成(三)

使用Aspose.Cell控件實現多個Excel文件的合並

以及關於Word的操作的《利用Aspose.Word控件實現Word文檔的操作

這些都是我本人的總結,是實實在在的從項目中來,到博客中去的經驗總結,本篇主要介紹在Web的模板化文檔輸出中,Aspose.Word控件和Aspose.Cell控件的使用操作。

1、Word模板化的文檔導出

模板化的輸出,首先是在預定義好固定的模板,然后綁定數據源或者替換相關的文字實現模板化文檔的導出操作。

在Aspose.Word的操作對象中,我們可以使用文本替換的方式實現模板內容的修改,簡單的操作如下所示。

Document doc = new Document(MyDir + "Document.doc");
doc.Range.Replace("wuhuacong", "伍華聰", false, true);

也可以以書簽引用替換的方式實現,首先要定義好相應的標簽引用,操作如下。

在一個Word文檔中某固定位置插入一個標簽引用,在Word(2007、2010)的【插入】-【書簽】中插入指定位置的書簽引用,如下所示。

替換標簽內容的代碼如下所示。

Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["ACCUSER_SEX"];
 if (bookmark != null)
 {
      bookmark.Text = "";
 }

為了較好展示操作效果,我們先來固定一個Word的模板文檔,如下所示。

實現模板化的文檔導出,我這里結合兩種方式實現內容的替換操作,一個是使用文字替換,一個是使用標簽引用,兩部分的代碼如下所示。

        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*";
            } 

            #endregion

            doc.Save(Response, "testAdvice.doc", Aspose.Words.ContentDisposition.Attachment,
                Aspose.Words.Saving.SaveOptions.CreateSaveOptions(Aspose.Words.SaveFormat.Doc));
        }

基於Asp.NET的界面如下所示。

生成的模板化文檔如下所示,整個文檔是基於固定模板輸出,因此比較標准和統一化。

2、Aspose.Cell模板化的文檔導出

Aspose.Cell的模板化文檔也是類似,也有兩種方式可以操作,一種是替換文本,一種是綁定數據源的方式實現,具體可以參考一下我前面的列出隨筆,對於Apsose.Cell來說,綁定數據源的功能非常強大。

綁定數據源是通過在模板中設置變量對象方式,變量對象是通過&=來引用,對象的屬性或者列名,通過如&=Customer.City方式引用,非常直觀方便。

這種方式的變量對象支持簡單對象,如下所示。

 

也支持復雜的集合對象,如下所示。

為了演示模板化的文檔導出,我這里設計了一個固定的Excel模板,通過兩種方式實現數據的替換,先定義Excel模板如下所示。

后台綁定數據的代碼如下所示。

        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]);
            }

            //使用綁定數據方式替換
            designer.SetDataSource("ACCUSER_SEX", "");
            designer.SetDataSource("ACCUSER_TEL", "1862029207*");
            designer.Process();

            designer.Save("testAdvice.xls", SaveType.OpenInExcel, FileFormatType.Excel2003, Response);
        }

 

以上就是使用Aspose.Word控件和Aspose.Cell控件,實現Word文檔和Excel文檔的模板化導出的相關操作過程及代碼,希望對大家有幫助,也作為我的一個總結,以后參考,呵呵,歡迎互相溝通研究。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM