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

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