Home » Python » python-docxの使い方 » python-docxでセルを取得するさまざまな方法

python-docxでセルを取得するさまざまな方法

動作検証バージョン:64bit Windows 10 Pro + + Python 3.8.3 + python-docx 0.8.10

「python docx セル取得」
といった検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。

このキーワードだけでは何をしたかったのかがわかりませんので、ここでは表のセルを取得するコードをいくつかご紹介します。

[スポンサードリンク]

一番左上のセルを取得するサンプル

Cドライブtempフォルダーに、表の含まれるsample.docxを用意しておいてから、以下のスクリプトを実行してください。

import docx

doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]

cel = tbl.cell(0, 0)
print(cel.text)

一番左上のセルに入力されている文字列が出力されます。
セルを取得してからどうしたかったのかがわかりませんので、ここではprintを行っています。
  print(cel.text)

表を表すTableオブジェクトを取得して、
  tbl = doc.tables[0]

cellメソッドを使ってセルを表す_Cellオブジェクトを取得しています。
  cel = tbl.cell(0, 0)

この方法が、python-docxでセルを取得する基本です。

二重のfor文でセルを順番に取得するサンプル

上記のコードを応用して以下のようなスクリプトにすれば、セルを順番に取得できます。

import docx

doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]

for r in range(len(tbl.rows)):
    for c in range(len(tbl.columns)):
        cel = tbl.cell(r, c)
        print(cel.text)

一つのfor文でセルを順番に取得するサンプル

上記の二重のfor文を使うのが応用しやすいと思いますが、順番にセルを取得するだけなら以下のようなコードで済みます。

import docx

doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]

for cel in tbl._cells:
    print(cel.text)

Tableオブジェクトの_cells属性で、_Cellオブジェクトを要素として含むリストを取得できるので、for文で順番に_Cellを取得しています。

行のセルを順番に取得する

特定の行に含まれるセルを順番に取得したい場合、以下のスクリプトが参考になるでしょう。

import docx

doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]

for cel in tbl.row_cells(0):
    print(cel.text)

実行すると、1行目のセルが順番に取得されて、セル内の文字列が出力されます。

row_cellsメソッドで、1行目に含まれる_Cellオブジェクトを要素として含むリストを取得して、for文で順番に各_Cellを取得しています。

列のセルを順番に取得する

特定の列に含まれるセルを順番に取得したい場合は、以下のようなコードです。

import docx

doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]

for cel in tbl.column_cells(0):
    print(cel.text)

先ほどの1行目のセルを順番に取得するコードと考え方は同じで、column_cellsメソッドを使っている点のみが異なります。

[スポンサードリンク]

Home » Python » python-docxの使い方 » python-docxでセルを取得するさまざまな方法

Home » Python » python-docxの使い方 » python-docxでセルを取得するさまざまな方法

Copyright © インストラクターのネタ帳 All Rights Reserved.

.