以编程方式在.doc中搜索+替换

时间:2010-08-11 18:56:12

标签: c++ c haskell ms-word doc

如果我给了一个带有特殊标签的.doc文件,例如[first_name],我如何用“Clark”之类的东西替换它的所有出现?只有替换字符串的长度完全相同时,才能使用简单的二进制替换。

Haskell,C和C ++的答案是最好的,但任何编译语言都可以。我也更喜欢在没有外部库的情况下执行此操作,因为它必须部署在Windows和Linux上,并且跨平台依赖性处理是一个婊子。

总结......

.doc -> magic program -> .doc with strings replaced

4 个答案:

答案 0 :(得分:4)

您可以在Windows上使用Word COM组件(“Word.Application”)打开文件,执行替换,保存文件并关闭它。但是,这只是Windows,可能有问题。

你可以做的另一件事是使用OpenOffice.org命令行界面将文件转换为ODF格式,解压缩文件(ODF主要是压缩的XML),用里面的文件替换,重新压缩文件,并将其重新转换为.doc格式。但是,OpenOffice.org并不总是正确读取Word文件(特别是如果存在大量复杂的格式),并且它可能使分发更加困难(用户必须拥有OpenOffice.org,或者必须将其与您的程序一起分发)。

此外,如果你有一个.docx格式的文件,你可以解压缩它,进行替换,并重新压缩它。

答案 1 :(得分:2)

首先阅读Word Document Specification

如果这并没有吓到你,那么你应该发现如何阅读和写它是相当简单的。一定是可能的; Word设法在大多数时间内完成它。

答案 2 :(得分:1)

您可能必须使用.Net编程(VB或C#)来创建Word.Application的对象,然后使用MS Word对象模型来操作您的文档。

答案 3 :(得分:0)

为什么要使用C / C ++ / Haskell或其他编译语言?我对Haskell并不太熟悉,但总的来说我会说C不是执行文本处理的好语言。许多解释语言(Perl,Python等)也有强大的正则表达式库,适合查找和替换短语。

话虽如此,正如其他海报所说,你仍然需要处理.doc格式的怪癖。