公司整理文档工作中,出现了一个需要使用全局字符替换多个word文档、excel文档中的内容的需求。虽然office、WPS都有全局替换的功能(ctrl+h),但是文件过多,且需要替换多次,工作量还是比较令人头大。因此需要自制一个小工具实现多个文件全局替换。

首先查找网上的案例,发现FreeSpire.DocFreeSpire.Xls可以通过操作word文档、excel文件来实现这一功能。而且资源易于下载,直接打开程序包控制台,输入指令安装即可。

安装后的项目中的引用列表会多出以下几个新项:

实现替换方法代码如下,以替换excel为例:

Spire.Xls.Workbook workbook = new Spire.Xls.Workbook();
workbook.LoadFromFile(filepath);
workbook.Replace(oldstr,newstr);

这样就实现了对单个文件的字符串替换。对文件列表循环调用此方法即可实现多文件多字符的替换。

但是在实际使用中,发现Spire的组件加载很多文件时会报错,不知道是组件内部冲突还是组件本身不支持一些文件。

因此找到了另一款操作office文件的插件:Aspose.Words、Aspose.Cells

Aspose的组件需要在网上下载,下载Aspose.Words.dll、Aspose.Cells.dll两个文件:

下载后在项目中手动添加引用:

完成后的引用列表:

使用Aspose对文件进行替换操作,和Spire的方式很类似,替换word文档中的字符串:

var document = new Aspose.Words.Document(filepath);
document.Range.Replace(oldstr, newstr, true, false);

替换excel:

Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook(filepath);
foreach(Aspose.Cells.Worksheet ws in workbook.Worksheets)
{
ws.Replace(oldstr, newstr);
ws.Name.Replace(oldstr, newstr);
}

为实现对多个文件进行同时替换,需要有获取选中文件夹中所有文件的方法:

public List<FileInfo> GetAllFiles(DirectoryInfo dir)
{
List<FileInfo> filelist = new List<FileInfo>();
filelist.AddRange(dir.GetFiles()); if (dir.GetDirectories().Count() > )
{
DirectoryInfo[] fod = dir.GetDirectories();
foreach(DirectoryInfo dire in fod)
{
filelist.AddRange(GetAllFiles(dire));
}
}
return filelist;
}

基于C#简单实现多个word文件和Excel文件的全局字符串替换的更多相关文章

  1. CSV格式的文件与EXCEL文件的区别

    CSV格式的文件与EXCEL文件的区别 Excel CSV 这是一个二进制文件,它保存有关工作簿中所有工作表的信息 CSV代表Comma Separated Values .这是一个纯文本格式,用逗号 ...

  2. Java读取txt文件、excel文件的方法

    Java读取txt文件.excel文件的方法 1.读取txt文件 public static String getFileContent(String filePath,String charset) ...

  3. 将word文件转为excel文件

    有些word文件里的数据是有顺序或者规律,想转成表格的形式,下面就以我要转的word为例. 我的word文件是这样的 1.word转txt(文本文件) 文件--->另存为--->路径--- ...

  4. 下载zip格式文件(压缩Excel文件为zip格式)

    Mongodb配置文件参考这一篇:http://www.cnblogs.com/byteworld/p/5913061.html package util; import java.io.Buffer ...

  5. C#仪器数据文件解析-Excel文件(xls、xlsx)

    不少仪器工作站可以将数据导出为Excel文件,包括97-2003版本的xls文件和2007+的xlsx文件. 采集Excel文件相比采集pdf文件更容易.程序更健壮,毕竟Excel中数据有明确的行.列 ...

  6. jspsmart(保存文件)+poi(读取excel文件)操作excel文件

    写在前面: 项目环境:jdk1.4+weblogic 需求:能上传excel2003+2007 由于项目不仅需要上传excel2003,还要上传excel2007,故我们抛弃了jxl(只能上传exce ...

  7. JavaFX 选择文件 导入Excel文件并解析

    FXML 控制器 : @FXML public void selectExcel(MouseEvent event) { FileChooser fileChooser = new FileChoos ...

  8. python读取csv文件、excel文件并封装成dict类型的list,直接看代码

    # coding=UTF-8import csvimport xlrd class ReaderFile(): """ 读取csv文件 filePath:文件路径 &qu ...

  9. Json文件转换为Excel文件!涉及读文件,时间戳转化,写文档

    一. 思路 今天接到个小任务,让把json文件转换成excel文件,按照列展开. 思路:既然json已经都已经是现成的,那直接将json文件做读操作,在通过不同的key,找到对应的信息,在存到单元格中 ...

随机推荐

  1. 2018-2019-2 20165316 《网络对抗技术》 Exp6 信息搜集与漏洞扫描

    2018-2019-2 20165316 <网络对抗技术> Exp6 信息搜集与漏洞扫描 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应 ...

  2. 同事问如何判断同花顺,我用javascript的二维数组写了个简易demo

    有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo. <!DOCTYPE html> <html> <body> <s ...

  3. vue的三种通信方式

    一 确定组件关系二 使用第一步确定的组件关系在下面找到使用方法 1 父子通信(子组件使用父组件数据渲染) a) 在 子组件 中添加props props: [自定义prop名字] b) 在子组件中把自 ...

  4. vue.js把mounted里面的变量传到data里面

    data(){ return{ crux:[] //声明下变量 } }, mounted:function(){ var cruxs = localStorage.historyItems.split ...

  5. Linux 下 ls -l 命令执行显示结果的每一列含义【转载】

    转自:zhuoya_的博客 原文地址>>https://blog.csdn.net/zhuoya_/article/details/77418413

  6. js 获取屏幕或元素宽高...

    窗口相对于屏幕顶部距离 window.screenTop 窗口相对于屏幕左边距离 window.screenLeft, 屏幕分辨率的高 window.screen.height, 屏幕分辨率的宽 wi ...

  7. JZ2440学习笔记之中断

    .extern main .text .global _start _start: @********************************************************* ...

  8. mime类型的解析与应用

    MIME类型解析   MIME(Multipurpose Internet Mail Extensions)多用途网络邮件扩展类型,可被称为Media type或Content type, 它设定某种 ...

  9. Oracle索引之Btree索引

    索引介绍 日常开发中,对于数据的查询如果需要优化,常听说要加个索引.但是为什么加了索引,数据的查询就快了呢?那是不是加了索引就一定会是有效或者有利的呢? Oracle中常见有BTREE索引,位图索引和 ...

  10. 图像旋转、伸缩的自写matlab实现

    一.图像的旋转 今天的代码不是自己写的,缺少一些时间.但是认认真真推导了一下旋转的公式,代码的思想与原博博主一致,致敬! 愚以为,自己来实现图像旋转算法的关键点有二:其一,确定旋转后的图像边界.其二, ...