DOCXファイルのテーブルのすべてのセルの内容を読み取って処理するにはどうすればよいですか?
Windows 7およびPyWin32でPython 3.2を使用してMS-Wordドキュメントにアクセスしています。
私は初心者なので、テーブルセルに到達するための適切な方法がわかりません。これまでのところ、これを実行しました:
import win32com.client as win32
Word = win32.gencache.EnsureDispatch('Word.Application')
Word.Visible = False
doc = Word.Documents.Open("MyDocument")
Python 2.7:
import win32com.client as win32
Word = win32.Dispatch("Word.Application")
Word.Visible = 0
Word.Documents.Open("MyDocument")
doc = Word.ActiveDocument
ドキュメントに含まれるテーブルの数を確認するには:
doc.Tables.Count
次に、必要なテーブルをインデックスで選択できます。 Pythonとは異なり、COMインデックスは1から始まることに注意してください。
table = doc.Tables(1)
セルを選択するには:
table.Cell(Row = 1, Column= 1)
その内容を取得するには:
table.Cell(Row =1, Column =1).Range.Text
これがお役に立てば幸いです。
編集:
見出しに基づいて列インデックスを返す関数の例:
def Column_index(header_text):
for i in range(1 , table.Columns.Count+1):
if table.Cell(Row = 1,Column = i).Range.Text == header_text:
return i
次に、この方法で必要なセルにアクセスできます。例:
table.Cell(Row =1, Column = Column_index("The Column Header") ).Range.Text
人生の後半に飛び込んできましたが、とにかくこれを出そうと思ったのですが、今(2015年)、かなりきちんとしたドキュメントを使用できますpythonライブラリ: https:// python -docx.readthedocs.org/en/latest/ そして次に:
from docx import Document
wordDoc = Document('<path to docx file>')
for table in wordDoc.tables:
for row in table.rows:
for cell in row.cells:
print cell.text
私はブログで簡単なコードスニペットを見つけました Pythonを使用したテーブルコンテンツの読み取りetienne による
これのすばらしい点は、標準以外のpythonライブラリをインストールする必要がないことです。
Docxファイルの形式は Open Office XML で説明されています。
import zipfile
import xml.etree.ElementTree
Word_NAMESPACE = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
PARA = Word_NAMESPACE + 'p'
TEXT = Word_NAMESPACE + 't'
TABLE = Word_NAMESPACE + 'tbl'
ROW = Word_NAMESPACE + 'tr'
CELL = Word_NAMESPACE + 'tc'
with zipfile.ZipFile('<path to docx file>') as docx:
tree = xml.etree.ElementTree.XML(docx.read('Word/document.xml'))
for table in tree.iter(TABLE):
for row in table.iter(ROW):
for cell in row.iter(CELL):
print ''.join(node.text for node in cell.iter(TEXT))