国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

.net使用Aspose.Words進行Word替換操作的實現(xiàn)代碼

2020-01-24 03:15:42
字體:
供稿:網(wǎng)友
之前在工作中,需要實現(xiàn)Word打印功能,并且插入圖片。當時采取的方式則是使用書簽進行操作。首先在word內(nèi)插入書簽,完成后,存為模板。程序加載該模板,找到書簽,并在指定位置寫入文字即可。

  后期維護過程中,發(fā)現(xiàn)模板經(jīng)常需要變更,但是書簽在word中不方便查看,用戶在編輯word的時候容易出錯。于是想采取特殊字符串標識的方式進行替換。此時,圖片的插入就存在問題,光標無法直接移動到指定字符串。

資源下載:

  源代碼 //m.survivalescaperooms.com/codes/84240.html

開發(fā)思路:

  查閱 Aspose.Words提供的API,發(fā)現(xiàn)有Range類有該方法:

復制代碼 代碼如下:

public int Replace(Regex pattern, IReplacingCallback handler, bool isForward);

該方法則是在使用正則表達式進行文檔內(nèi)替換的同時可以執(zhí)行IReplacingCallback接口。

具體實現(xiàn)代碼如下:

復制代碼 代碼如下:

/* ==============================================================================
   * 文 件 名:Program
   * 功能描述:
   * Copyright (c) 2013 武漢經(jīng)緯視通科技有限公司
   * 創(chuàng) 建 人: alone
   * 創(chuàng)建時間: 2013/4/2 11:16:19
   * 修 改 人:
   * 修改時間:
   * 修改描述:
   * 版    本: 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("學歷", "本科");
            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-07
            Console.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-07
            Console.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)
        {
            //獲取當前節(jié)點
            var node = e.MatchNode;
            //獲取當前文檔
            Document doc = node.Document as Document;
            DocumentBuilder builder = new DocumentBuilder(doc);
            //將光標移動到指定節(jié)點
            builder.MoveTo(node);
            //插入圖片
            builder.InsertImage(url);
            return ReplaceAction.Replace;
        }
    }
}



模板如圖:



生成文檔如圖:


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 德化县| 赤城县| 桐城市| 磴口县| 灯塔市| 奉化市| 虹口区| 瓦房店市| 自治县| 宝清县| 乌兰浩特市| 汶上县| 西盟| 从江县| 泸溪县| 阜城县| 永川市| 阿拉善右旗| 馆陶县| 江城| 梨树县| 泗阳县| 台前县| 游戏| 晋州市| 贡嘎县| 南充市| 荥阳市| 金溪县| 梁山县| 德令哈市| 新乡市| 健康| 藁城市| 义乌市| 色达县| 荆州市| 尚志市| 文成县| 南平市| 玉田县|