python - 我可以使用 Win32 COM 替换 word 文档中的文本吗?

标签 python winapi com ms-word replace

我必须在某些文档中执行大量替换,问题是,我希望能够自动执行该任务。一些文档包含通用字符串,如果可以自动化,这将非常有用。从我目前所读的内容来看,COM 可能是执行此操作的一种方式,但我不知道是否支持文本替换。 我希望能够在 python 中执行此任务?是否可以?您能否发布一个代码片段来展示如何访问文档的文本?

谢谢!

最佳答案

到目前为止,我喜欢这些答案;
这是一个经过测试的示例(从 here 稍作修改)
替换 Word 文档中所有出现的字符串:

import win32com.client

def search_replace_all(word_file, find_str, replace_str):
    ''' replace all occurrences of `find_str` w/ `replace_str` in `word_file` '''
    wdFindContinue = 1
    wdReplaceAll = 2

    # Dispatch() attempts to do a GetObject() before creating a new one.
    # DispatchEx() just creates a new one. 
    app = win32com.client.DispatchEx("Word.Application")
    app.Visible = 0
    app.DisplayAlerts = 0
    app.Documents.Open(word_file)

    # expression.Execute(FindText, MatchCase, MatchWholeWord,
    #   MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, 
    #   Wrap, Format, ReplaceWith, Replace)
    app.Selection.Find.Execute(find_str, False, False, False, False, False, \
        True, wdFindContinue, False, replace_str, wdReplaceAll)
    app.ActiveDocument.Close(SaveChanges=True)
    app.Quit()

f = 'c:/path/to/my/word.doc'
search_replace_all(f, 'string_to_be_replaced', 'replacement_str')

关于python - 我可以使用 Win32 COM 替换 word 文档中的文本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1045628/

相关文章:

python - 如何创建和销毁wx.App?

c++ - 从未调用过 Win32 ListBox WNDPROC

windows - raw_interfaces_only 用法?

python - 在 Charm-Crypto 中序列化和反序列化组元素

python - Python exec 中的作用域

c++ - DELETE_ON_CLOSE 发生得太早

macos - OS/X 上的 iTunes COM 接口(interface)

c# - 以编程方式确定是否安装了 COM 库 (.DLL)

Python:无法从外部进程设置进程变量

c - 我如何知道外部 DLL 是否进入函数?