彩票走势图

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

转帖|使用教程|编辑:龚雪|2014-11-10 09:47:06.000|阅读 2193 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

慧都年终巨献,Aspose系列产品黄金版+白金版享<8折>优惠! 截止日期2014/11/30

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

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

开发思路: 

查阅 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<string, string>();
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
{
/// <summary>
/// 需要插入的图片路径
/// </summary>
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;
}
}
}

慧都年终巨献,Aspose系列产品黄金版+白金版享<8折>优惠! 截止日期2014/11/30

模板如图: 

使用Aspose.Words进行Word替换

生成文档如图: 

使用Aspose.Words进行Word替换

比双十一更劲爆!【年终大促 巅峰盛"慧" 】促销火热进行中 iPhone 6 Plus、 iPhone 6、iPad Air满就送,还不赶快买买买!

原文来自:脚本之家


标签:Aspose.words

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP