.net 使用 Aspose.Words 进行 Word替换操作
原文 http://www.cnblogs.com/codealone/archive/2013/04/02/2995224.html
背景:
之前在工作中,需要实现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-07Console.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-07Console.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;}}}
模板如图:
生成文档如图:
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】按钮。
感谢阅读,希望这篇文章能给你带来帮助!
转载于:https://www.cnblogs.com/lonelyxmas/archive/2013/05/18/3086224.html
.net 使用 Aspose.Words 进行 Word替换操作相关推荐
- Aspose.Words对于Word的操作
对于word操作一般是对已有word模板的操作,直接新建的不考虑,网上教程很多,自己看吧 一般有以下几种办法(忘了具体几种了,一般情况下以下就够了) 1.通过书签替换 顾名思义,就是先定义一个书签,然 ...
- Aspose Word常用操作
Aspose Word常用操作 使用Aspose Word操作模版 创建Document对象 常用方法 使用Aspose Word操作模版 刚好最近学到Aspose Word,有些心得,记录下来.下面 ...
- Aspose.Java实现word转pdf,添加水印等操作
Aspose.Java实现word转pdf,添加水印等操作 一. word转pdf 二. 文档插入水印 Aspose是一款商用版控件,支持各类文档操作,这里主要介绍如何在Springboot项目中使用 ...
- java操作word文档(文字,图片,表格添加以及替换操作)
注:本文由于个人工作需要,有对多个他人博文进行借鉴,但是多数博文都只是讲到了小部分,例如图片/表格的操作,都只有根据书签进行替换,比较片面,本人有总结到根据文字进行图片/表格的替换,希望可以帮到更多有 ...
- (一)JAVA基于OPENXML的word文档插入、合并、替换操作系列之基础篇
(一)JAVA基于OPENXML的word文档插入.合并.替换操作系列之基础篇 前言 什么是Open Xml? Open XML SDK 这系列笔记要做点什么? 涉及技术点 关于word.openxm ...
- poi操作word替换模板向指定位置添加图表
poi操作word替换模板向指定位置添加图表 首先是引入pom文件 <dependency><groupId>org.apache.poi</groupId>< ...
- (五)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之word文件合并[支持多文件]
(五).JAVA基于OPENXML的word文档插入.合并.替换操作系列之word文件合并[支持多文件] 二.word合并的多种方案简单比较 三.基于Open Xml WordprocessingML ...
- java openxml 操作 word,(三)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之html转word...
(三).JAVA基于OPENXML的word文档插入.合并.替换操作系列之html转word 系列笔记传送门 富文本转word文档 准备待转换内容 内容清理与格式化 转换成word文档 输出结果展示 ...
- C# Word 查找替换操作
转自http://blog.chinaunix.net/uid-25498312-id-4149333.html 参考网上大部分提供的word查找替换的方法,昨天还好使,今天wordDoc.Conte ...
最新文章
- 【青少年编程】黄羽恒:我要背单词
- 如何用纯 CSS 创作气泡填色的按钮特效
- 一个简单的DELPHI自定义事件的例子(转)
- android程序root权限,android – 如何从源代码授予对特定应用程序的root访问权限而不是root权限?...
- 模拟ssh, hashlib模块, struct模块, subprocess模块
- CF1556D-Take a Guess【交互】
- vb如何测试连接mysql_VB怎么连接访问Access数据库?
- java 计算26个字母在一段文本中出现的频率(保留小数点后4位)
- pop!_os_Pop!幕后花絮_OS Linux
- add p4 多个文件_绘图技巧01:继承特性创建对象之神器ADD
- Liunx安装 jemalloc == 内存管理工具
- OSChina 周一乱弹 —— 只要给网,这种生活我能过一辈子
- 图像处理——采样与量化
- 汇编语言 王爽 【第四版】实验一
- 为什么chrome视频时卡得厉害(by quqi99)
- timesten系列一:简介
- C语言基础--从零开始初识语言(多图超详解|超万字教程)
- c++卸载工具_卸载软件同时清除软件注册表里面的信息,也许这款软件能够帮助你...
- GD32f103ret6 使用HID,设备管理里,提示未知设备
- 【解决问题】FlutterBlue在安卓手机上无法连接蓝牙设备,扫描缓慢