利用Aspose.Word控制項和Aspose.Cell控制項,實現Word文檔和Excel文檔的模板化匯出

來源:互聯網
上載者:User

標籤:des   blog   http   使用   檔案   width   

我們知道,一般都匯出的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文檔的模板化匯出的相關操作過程及代碼,希望對大家有協助,也作為我的一個總結,以後參考,呵呵,歡迎互相溝通研究。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.