4

最近我正在尝试使用不同的 API 进行 MS Word 文件管理(现在正在编写)。此时我只需要一个简单的编写python API。我尝试了 win32com 模块,该模块被证明非常强大,但缺乏在线 python 示例(对 VB 和 C 的了解很少,无法翻译 MSDN 中的示例)。

我尝试使用 python-docx,但安装后我得到了任何 docx 函数的回溯。

Traceback (most recent call last):
  File "C:\filepath.py", line 9, in <module>
    ispit = newdocument()
NameError: name 'newdocument' is not defined

我在通过源代码和 easy_install 安装 lxml 时遇到了一些问题。它正在检查 libxlm2 和 libxslt 二进制文件。我下载了它们并添加了环境路径,但安装槽源或 easy_install 每次都停止。

最后我使用了来自这个站点Link的非官方 python 扩展包。安装很快,最后没有错误。

我可以做些什么来使 docx 工作,并且在线是否有一些与 python win32com 相关的参考资料?我找不到任何东西。(除了MSDN(VB 不是 python)和O'Reily 在 win32 上的 Python 编程

4

1 回答 1

11

使用 时win32com,请记住您正在与 Word 对象模型对话。您无需了解很多 VBA 或其他语言即可将示例应用到使用 Python;你只需要弄清楚对象模型的哪些部分正在被使用。

让我们采用以下示例(在 VBA 中),它将创建 的新实例Application,并将新文档加载到该新实例中:

Public Sub NewWordApp()

    'Create variables to reference objects
    '(This line is not needed in Python; you don't need to declare variables 
    'or their types before using them)
    Dim wordApp As Word.Application, wordDoc As Word.Document

    'Create a new instance of a Word Application object
    '(Another difference - in VBA you use Set for objects and simple assignment for 
    'primitive values. In Python, you use simple assignment for objects as well.)
    Set wordApp = New Word.Application

    'Show the application
    wordApp.Visible = True

    'Create a new document in the application
    Set wordDoc = wordApp.Documents.Add()

    'Set the text of the first paragraph
    '(A Paragraph object doesn't have a Text property. Instead, it has a Range property
    'which refers to a Range object, which does have a Text property.)
    wordDoc.Paragraphs(1).Range.Text = "Hello, World!"

End Sub

Python 中类似的代码片段可能如下所示:

import win32com.client

#Create an instance of Word.Application
wordApp = win32com.client.Dispatch('Word.Application')

#Show the application
wordApp.Visible = True

#Create a new document in the application
wordDoc = wordApp.Documents.Add()

#Set the text of the first paragraph
wordDoc.Paragraphs(1).Range.Text = "Hello, World!"

Word 对象模型的一些链接:

一些 Python 示例:

于 2012-11-22T09:40:12.020 回答