原創(chuàng)|其它|編輯:郝浩|2012-10-12 11:22:07.000|閱讀 2136 次
概述:Aspose.Words是一個極其強大的Word操作組件,包括.Net和Java兩個版本,這里介紹的是.Net版本。Aspose.Words的詳細(xì)介紹在其官方網(wǎng)站上有介紹,但比較少有對Word模板的描述。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Aspose.Words是一個極其強大的Word操作組件,包括.Net和Java兩個版本,這里介紹的是.Net版本。
Aspose.Words的詳細(xì)介紹在其官方網(wǎng)站上有介紹,但比較少有對Word模板的描述。可以在官方網(wǎng)站上下載例子程序,其中包含了不少Word模板。
Aspose.Words主要通過Words里域(Fields)來控制內(nèi)容,基本方式就是新建一個新Word文件,在菜單中選擇插入->域,選擇MergeField,屬性->域名中輸入和數(shù)據(jù)庫表字段相同的名稱,然后確定就OK了。多添加幾個MergeField就可以輸入多個字段。接著是.net中的代碼,該代碼使用模板為基礎(chǔ),循環(huán)數(shù)據(jù)庫表的內(nèi)容,每條記錄在Word中顯示為一頁。
private void Page_Load(object sender, EventArgs e) { DataSet users = appService.GetAllUser(); Stream f = new FileStream(Server.MapPath("~") + @"\Output\Template\ApplyFormTemplate.doc", FileMode.Open); Document doc = new Document(f); // 建立圖片事件 doc.MailMerge.MergeImageField+=new Aspose.Words.Reporting.MergeImageFieldEventHandler(MailMerge_MergeImageField); // 執(zhí)行數(shù)據(jù)更新 doc.MailMerge.Execute(users.Tables[0]); // 刪除未使用的空白域 doc.MailMerge.DeleteFields(); // 將結(jié)果發(fā)送到客戶端 doc.Save("ApplyForm.doc", SaveFormat.Doc, SaveType.OpenInWord, Response); f.Close(); } private void MailMerge_MergeImageField(object sender, Aspose.Words.Reporting.MergeImageFieldEventArgs e) { if (e.FieldValue != null && e.FieldValue.ToString() != "") { PhotoService photoService = new PhotoService(); string photoPath = photoService.GetPhotoPathById((int)e.FieldValue); if (File.Exists(photoPath)) e.Image = Image.FromFile(photoPath); }
上面的代碼,可以將數(shù)據(jù)庫中所有用戶的資料按模板顯示,每個人的詳細(xì)記錄一個頁面。
需要特別說明的是上面的代碼中包含了照片。使用方法如下:
在需要加模板照片或圖片的地方,同樣插入域,但域名設(shè)置為:Image:數(shù)據(jù)表字段名,該處的數(shù)據(jù)表字段可以為String(也就是圖片地址),也可以是二進制的圖片。然后通過MergeImageField事件,將該處的顯示進行修改。如上面代碼,e.FieldValue就是數(shù)據(jù)庫里所保存的數(shù)據(jù)。然后通過一些代碼改變,設(shè)置e.Image的值為具體圖片,那么就完成。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:linwinfan的博客——博客園