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

 

公司整理文档工作中,出现了一个需要使用全局字符替换多个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() > 0)
            {
                DirectoryInfo[] fod = dir.GetDirectories();
                foreach(DirectoryInfo dire in fod)
                {
                    filelist.AddRange(GetAllFiles(dire));                    
                }
            }
            return filelist;
        }

 

转载于:https://www.cnblogs.com/cwr-toki/p/9837589.html

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值