4

最近、MS Word ファイル管理用のさまざまな API を試しています (今のところ執筆中です)。この時点で必要なのは、単純な書き込み用の Python API だけです。私はwin32comモジュールを試しましたが、これは非常に堅牢であることが証明されており、Pythonオンラインの例が不足しています(MSDNの例を翻訳できるVBとCの知識はほとんどありません)。

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 オブジェクト モデルと対話していることに注意してください。Python を使用してサンプルを適用するために、多くの VBA や他の言語を知る必要はありません。オブジェクト モデルのどの部分が使用されているかを把握するだけで済みます。

Applicationの新しいインスタンスを作成し、その新しいインスタンスに新しいドキュメントをロードする次のサンプル (VBA) を見てみましょう。

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 に答える