如何使用命令行(CLI)对word文档执行字符串替换

时间:2011-08-05 15:47:41

标签: php vba vbscript ms-word docx

我有一个Word文档模板,我需要进行查找和替换。 例如,我需要将<address 1>替换为1 Test Street

我尝试使用宏来执行此操作,我可以从命令行运行但您似乎无法传入参数,因此无法编辑您要搜索的模式或要替换它的事物。

我最终需要使用PHP,所以一直在寻找我可以用exec调用的东西,我确实找到了一个名为PHPWord的库看起来非常有用,但它的工作方式是将.doc文件解析为xml文件,这不能正常工作,导致单词被分成两半,因此对str_replace没有好处。

最后我看了一下使用VBScript,我根本没有这方面的经验,也无法让它工作。

3 个答案:

答案 0 :(得分:1)

如果您使用PHPDocX,要使用PHP替换Word文档中的现有文本字符串并保留所有Word样式,现在非常简单:Replacing text in a Word document with PHP

这个过程实现起来比较困难,因为Word(OOXML标准)将段落内容分解为不同的文本行。例如,如果Word文档的原始编辑器引入了一些更正,或者即使他已经按下了后退键,也可以将单个单词分成带有tehir自己标记的不同文本行。

PHPDocX的searchAndReplace方法查找某个文本字符串,提取其Word样式,并使用替换文本重建相应的paragrah,保留所有原始样式。

可以选择搜索并替换整个文档,包括页眉,页脚,脚注,注释等,或者如果性能很重要,可以选择指定部件。然而,该方法相当快,并且在一百页的Word文档中替换一串文本可能需要几百分之一秒。

答案 1 :(得分:0)

我对php或VBScript不太熟悉

python ::

中的任务很简单
#!/usr/bin/python
import sys
if __name__ == '__main__':
    filename = sys.argv[1]
    f = open(filename,'r')
    output = f.read().replace('<Address 1>','1 Test Street')
    f.close()
    f = open('filename','w')
    f.write(output)
    f.close()

在命令行上以$ python thisfile.py filename

运行该文件

答案 2 :(得分:0)

为什么不使用Interop访问Word文档。 您必须为此使用.NET,并且可以创建控制台应用程序。

查看Interop Class Namespacethis for an example