.net 使用 Aspose.Words 进行 Word替换操作
原文 http://www.cnblogs.com/codealone/archive/2013/04/02/2995224.html
背景:
之前在工作中,需要實(shí)現(xiàn)Word打印功能,并且插入圖片。當(dāng)時(shí)采取的方式則是使用書簽進(jìn)行操作。首先在word內(nèi)插入書簽,完成后,存為模板。程序加載該模板,找到書簽,并在指定位置寫入文字即可。
后期維護(hù)過程中,發(fā)現(xiàn)模板經(jīng)常需要變更,但是書簽在word中不方便查看,用戶在編輯word的時(shí)候容易出錯(cuò)。于是想采取特殊字符串標(biāo)識(shí)的方式進(jìn)行替換。此時(shí),圖片的插入就存在問題,光標(biāo)無法直接移動(dòng)到指定字符串。
資源下載:
源代碼
開發(fā)思路:
查閱?Aspose.Words提供的API,發(fā)現(xiàn)有Range類有該方法:
public int Replace(Regex pattern, IReplacingCallback handler, bool isForward);該方法則是在使用正則表達(dá)式進(jìn)行文檔內(nèi)替換的同時(shí)可以執(zhí)行IReplacingCallback接口。
具體實(shí)現(xiàn)代碼如下:
/* ==============================================================================* 文 件 名:Program* 功能描述:* Copyright (c) 2013 武漢經(jīng)緯視通科技有限公司* 創(chuàng) 建 人: alone* 創(chuàng)建時(shí)間: 2013/4/2 11:16:19* 修 改 人: * 修改時(shí)間: * 修改描述: * 版 本: v1.0.0.0* ==============================================================================*/ using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using Aspose.Words; namespace WordDemo {class Program{static void Main(string[] args){var dic = new Dictionary<string, string>();dic.Add("姓名", "楊冪");dic.Add("學(xué)歷", "本科");dic.Add("聯(lián)系方式", "02759597666");dic.Add("郵箱", "304885433@qq.com");dic.Add("頭像", ".//1.jpg");//使用書簽操作Document doc = new Document(".//1.doc");DocumentBuilder builder = new DocumentBuilder(doc);foreach (var key in dic.Keys){builder.MoveToBookmark(key);if (key != "頭像"){builder.Write(dic[key]);}else{builder.InsertImage(dic[key]);}}doc.Save("書簽操作.doc");//也可以保存為1.doc 兼容03-07Console.WriteLine("已經(jīng)完成書簽操作");//使用特殊字符串替換doc = new Document(".//2.doc");foreach (var key in dic.Keys){if (key != "頭像"){var repStr = string.Format("&{0}&", key);doc.Range.Replace(repStr, dic[key], false, false);}else{Regex reg = new Regex("&頭像&");doc.Range.Replace(reg, new ReplaceAndInsertImage(".//1.jpg"), false);}}doc.Save("字符串替換操作.doc");//也可以保存為1.doc 兼容03-07Console.WriteLine("已經(jīng)完成特殊字符串替換操作");Console.ReadKey();}}public class ReplaceAndInsertImage : IReplacingCallback{/// <summary>/// 需要插入的圖片路徑/// </summary>public string url { get; set; }public ReplaceAndInsertImage(string url){this.url = url;}public ReplaceAction Replacing(ReplacingArgs e){//獲取當(dāng)前節(jié)點(diǎn)var node = e.MatchNode;//獲取當(dāng)前文檔Document doc = node.Document as Document;DocumentBuilder builder = new DocumentBuilder(doc);//將光標(biāo)移動(dòng)到指定節(jié)點(diǎn) builder.MoveTo(node);//插入圖片 builder.InsertImage(url);return ReplaceAction.Replace;}}}?
模板如圖:
生成文檔如圖:
?? 如果,您認(rèn)為閱讀這篇博客讓您有些收獲,不妨點(diǎn)擊一下右下角的【推薦】按鈕。
?? 感謝閱讀,希望這篇文章能給你帶來幫助!
posted on 2013-05-18 21:46 NET未來之路 閱讀(...) 評(píng)論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/lonelyxmas/archive/2013/05/18/3086224.html
總結(jié)
以上是生活随笔為你收集整理的.net 使用 Aspose.Words 进行 Word替换操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql监听地址的设定 —— 解决外部
- 下一篇: 驰骋工作流引擎Silverlight版本