当前位置:  编程技术>.net/c#/asp.net

.net使用Aspose.Words进行Word替换操作的实现代码

    来源: 互联网  发布时间:2014-10-21

    本文导语:  之前在工作中,需要实现Word打印功能,并且插入图片。当时采取的方式则是使用书签进行操作。首先在word内插入书签,完成后,存为模板。程序加载该模板,找到书签,并在指定位置写入文字即可。   后期维护过程中,发...

之前在工作中,需要实现Word打印功能,并且插入图片。当时采取的方式则是使用书签进行操作。首先在word内插入书签,完成后,存为模板。程序加载该模板,找到书签,并在指定位置写入文字即可。

  后期维护过程中,发现模板经常需要变更,但是书签在word中不方便查看,用户在编辑word的时候容易出错。于是想采取特殊字符串标识的方式进行替换。此时,图片的插入就存在问题,光标无法直接移动到指定字符串。

资源下载:

  源代码 http://www./codes/84240.html

开发思路:

  查阅 Aspose.Words提供的API,发现有Range类有该方法:

代码如下:

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

该方法则是在使用正则表达式进行文档内替换的同时可以执行IReplacingCallback接口。

具体实现代码如下:

代码如下:

/* ==============================================================================
   * 文 件 名:Program
   * 功能描述:
   * Copyright (c) 2013 武汉经纬视通科技有限公司
   * 创 建 人: alone
   * 创建时间: 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();
            dic.Add("姓名", "杨幂");
            dic.Add("学历", "本科");
            dic.Add("联系方式", "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("已经完成书签操作");
            //使用特殊字符串替换
            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("已经完成特殊字符串替换操作");
            Console.ReadKey();
        }
    }

    public class ReplaceAndInsertImage : IReplacingCallback
    {
        ///
        /// 需要插入的图片路径
        ///
        public string url { get; set; }

        public ReplaceAndInsertImage(string url)
        {
            this.url = url;
        }

        public ReplaceAction Replacing(ReplacingArgs e)
        {
            //获取当前节点
            var node = e.MatchNode;
            //获取当前文档
            Document doc = node.Document as Document;
            DocumentBuilder builder = new DocumentBuilder(doc);
            //将光标移动到指定节点
            builder.MoveTo(node);
            //插入图片
            builder.InsertImage(url);
            return ReplaceAction.Replace;
        }
    }
}



模板如图:



生成文档如图:



    
 
 

您可能感兴趣的文章:

  • 把某个asp.net 控件替换成自定义控件的方法
  • .NET 正则表达式使用高级技巧之替换类介绍
  • NET c#索引器(indexer)介绍及代码示例
  • asp.net文字水印功能简单代码
  • C#/.NET字符串加密和解密实现(AES和RSA代码举例)
  • asp.net读取本地与全局资料文件的代码
  • c#/ASP.NET操作cookie(读写)代码示例
  • asp.net正则表达式提取中文的代码示例
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • asp.net使用mshtml处理html的代码
  • .net中string实现无重复数字的代码一例
  • asp.net 判断当前日期是该年中第几周的代码
  • 推荐免费源代码下载网站WWW.CPPN.NET
  • asp.net 获取目录中图片的代码
  • asp.net中利用正则表达式判断一个字符串是否为数字的代码
  • asp.net防止页面刷新重复提交的代码
  • C#.NET程序添加到右键菜单的实现代码
  • asp.net 获取ashx中数据的代码
  • asp.net 正则表达式匹配图片路径的实现代码
  • asp.net弹出消息框、确认框的代码汇总
  • asp.net文件分块下载的实现代码
  • asp.net简单的文件上传代码
  • vb.net实现后台发送短信的代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux操作系统能运行Asp.net的项目吗?
  • asp.net操作cookie的例子
  • .Net中的json操作类用法分析
  • 如何让C#、VB.NET实现复杂的二进制操作
  • .NET程序页面中,操作并输入cmd命令的小例子
  • asp.net操作cookie实例代码
  • asp.net 操作cookie实例详解
  • c#(asp.net) 时间操作基类(支持长短日期与时间差)
  • 一个ASP.NET的MYSQL的数据库操作类自己封装的
  • ado.net操作数据库的别样用法
  • C#利用ODP.net连接Oracle数据库的操作方法
  • vb.net 实现操作excel的代码
  • asp.net获取客户端参数与操作系统信息
  • asp.net xml文件的读写、添加、修改、删除操作示例
  • asp.net 操作cookie的简单实例
  • ASP.net中获取客户端参数操作系统信息
  • .NET操作Excel实例分享
  • c#.net操作xml的基础代码
  • asp.net操作cookie的代码
  • asp.net操作ini文件示例
  • java命名空间javax.net类socketfactory的类成员方法: createsocket定义及介绍
  • .NET版的ExtJS库 Ext.Net
  • java命名空间java.net类datagramsocket的类成员方法: disconnect定义及介绍
  • node.js的.net扩展 node.net
  • java命名空间java.net类datagramsocket的类成员方法: close定义及介绍
  • 为什么输http://www.china-java.net,会自动改为http://www.china-java.net:8081?
  • java命名空间java.net接口cookiestore的类成员方法: get定义及介绍
  • 各位之不知道net-snmp是否收费?我的产品中用到了net-snmp lib是否需要向什么单位或者组织付费?
  • java命名空间java.net类socket的类成员方法: isbound定义及介绍
  • 【人才】有没有人会用VC6.0/VS2003.NET/VS2005.NET写WINDOWS下的驱动程序呀。
  • java命名空间java.net类datagrampacket的类成员方法: getsocketaddress定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3