Aspose.Words是一個(gè)極其強(qiáng)大的Word操作組件,包括.Net和Java兩個(gè)版本,這里介紹的是.Net版本。
Aspose.Words的詳細(xì)介紹在其官方網(wǎng)站上有介紹,但比較少有對(duì)Word模板的描述。可以在官方網(wǎng)站上下載例子程序,其中包含了不少Word模板。
Aspose.Words主要通過(guò)Words里域(Fields)來(lái)控制內(nèi)容,基本方式就是新建一個(gè)新Word文件,在菜單中選擇插入->域,選擇MergeField,屬性->域名中輸入和數(shù)據(jù)庫(kù)表字段相同的名稱(chēng),然后確定就OK了。多添加幾個(gè)MergeField就可以輸入多個(gè)字段。接著是.net中的代碼,該代碼使用模板為基礎(chǔ),循環(huán)數(shù)據(jù)庫(kù)表的內(nèi)容,每條記錄在Word中顯示為一頁(yè)。
- 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ā)送到客戶(hù)端
- 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ù)庫(kù)中所有用戶(hù)的資料按模板顯示,每個(gè)人的詳細(xì)記錄一個(gè)頁(yè)面。
需要特別說(shuō)明的是上面的代碼中包含了照片。使用方法如下:
在需要加模板照片或圖片的地方,同樣插入域,但域名設(shè)置為:Image:數(shù)據(jù)表字段名,該處的數(shù)據(jù)表字段可以為String(也就是圖片地址),也可以是二進(jìn)制的圖片。然后通過(guò)MergeImageField事件,將該處的顯示進(jìn)行修改。如上面代碼,e.FieldValue就是數(shù)據(jù)庫(kù)里所保存的數(shù)據(jù)。然后通過(guò)一些代碼改變,設(shè)置e.Image的值為具體圖片,那么就完成。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
