公司整理文档工作中,出现了一个需要使用全局字符替换多个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. 基于PLC1850平台的ICMP包请求与响应

    一.以太网IP包报文格式 IP包是连接在以太网首部(以太网目的MAC地址(6个字节)+以太网源MAC地址(6个字节)+帧类型(2个字节))之后. IP报文中各个字段分析如下: ①.版本:在IP报文中, ...

  2. [转]SQL中 OVER(PARTITION BY) 取上一条,下一条等

    OVER(PARTITION BY)函数介绍 开窗函数               Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返 ...

  3. window bat 切换目录并执行php文件

    新建一个 test.bat文件,输入一下命令并保存 cmd /k "cd /d D:\PHPWAMP_IN2\phpwamp\server\Nginx-PHPWNMP\htdocs\test ...

  4. windows微信双开

    下面的代码写到xxx.bat文件中 @echo off start /d "D:\software\WeChat\" WeChat.exe start /d "D:\so ...

  5. re模块的应用

    import re # 正则表达式中的转义 : # '\(' 表示匹配小括号 # [()+*?/$.] 在字符组中一些特殊的字符会现出原形 # 所有的 \w \d \s(\n,\t, ) \W \D ...

  6. Linux系统 磁盘IO过高排查总结

    最近做的一个电商网站因为磁盘 I/O 过高导致访问速度奇慢,问题存在两个月有余未得到解决办法.此次排查原因的经验可以作下次问题的参考. 1.会看懂 top 系统命令出来的各项参数.此次是无意中发现 u ...

  7. 单元测试系列之十:Sonar 常用代码规则整理(二)

    摘要:帮助公司部署了一套sonar平台,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ======== ...

  8. JS宽高理解

    1.clentWidth和clientHeight ①加入无padding.无滚动条显示占据位置 clientWidth=style.width ②假如有padding.无滚动 clientWidth ...

  9. jQuary学习の五のAJAX

    AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. 一.jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. loa ...

  10. WinForm 设置窗体启动位置在活动屏幕右下角

    WinForm 设置窗体启动位置在活动屏幕右下角 在多屏幕环境下, 默认使用鼠标所在的屏幕 1. 设置窗体的 StartPosition 为 FormStartPosition.Manual. 2. ...