C#解决使用Aspose.Words进行Word中文本替换,第二段出现空格或制表符的问题

使用Aspose.Words进行Word中文本替换的代码如下:

using Aspose.Words;

string fileName = "a.doc";//fileName是路径地址,需要扩展名
Aspose.Words.Document doc = new Document(fileName);//打开word文档

doc.Range.Replace("你好", "*****", new Aspose.Words.Replacing.FindReplaceOptions());
                

以上代码中,“你好”  是a.doc中需要替换的文本,***** 是替换后的文本,可以是数据库中的字段,或TextBox控件中的文字等。

通过以上代码实现了doc文本中的文字替换,但在替换过程中会出现:当你用连续几段文字对doc中的指定文本进行替换时,从替换后的第二段文本开始,每一段的段前都会出现一个类似空格和制表符的东西(在WPS中,以空格或制表符的形式显示;在office中,以一个长方形的小方块的形式显示),没错,实际上那不是空格或制表符,而是上一段的回车留下的空白,在你替换文本写入word时,当前word会进行分段,并保留之前回车和空白。之前的空白是在上一段的段末,此时的空白则被放置到了下一段段首

我们的解决方式就是将该空白进行替换,替换的方式如下:

doc.Range.Replace("\n你", "你", new Aspose.Words.Replacing.FindReplaceOptions());
doc.Range.Replace("\n好", "好", new Aspose.Words.Replacing.FindReplaceOptions());

也就是把之前的回车给替换成 “”(空字符串),不能直接将  “\n”  替换成  “” ,那么首行缩进就没了,简单实现首行缩进就是直接空两个字的位置 。

doc.Range.Replace("\n", "    ", new Aspose.Words.Replacing.FindReplaceOptions());

 

你可能感兴趣的:(C#)