「python docx セル取得」
といった検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。
このキーワードだけでは何をしたかったのかがわかりませんので、ここではWord文書内に存在する表のセルを取得するコードをいくつかご紹介します。
一番左上のセルを取得するサンプル
Cドライブtempフォルダーに、表の含まれるsample.docxを用意しておいてから、以下のスクリプトを実行してください。
doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]
print(cel.text)
一番左上のセルに入力されている文字列が出力されます。
セルを取得してからどうしたかったのかがわかりませんので、ここではprintを行っています。
print(cel.text)
表を表すTableオブジェクトを取得して、
tbl = doc.tables[0]
cellメソッドを使ってセルを表す_Cellオブジェクトを取得しています。
cel = tbl.cell(0, 0)
この方法が、python-docxでセルを取得する基本です。
二重のfor文でセルを順番に取得するサンプル
上記のコードを応用して以下のようなスクリプトにすれば、セルを順番に取得できます。
doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]
for c in range(len(tbl.columns)):
cel = tbl.cell(r, c)
print(cel.text)
一つのfor文でセルを順番に取得するサンプル
上記の二重のfor文を使うのが応用しやすいと思いますが、順番にセルを取得するだけなら以下のようなコードで済みます。
doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]
print(cel.text)
Tableオブジェクトの_cells属性で、_Cellオブジェクトを要素として含むリストを取得できるので、for文で順番に_Cellを取得しています。
行のセルを順番に取得する
特定の行に含まれるセルを順番に取得したい場合、以下のスクリプトが参考になるでしょう。
doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]
print(cel.text)
実行すると、1行目のセルが順番に取得されて、セル内の文字列が出力されます。
row_cellsメソッドで、1行目に含まれる_Cellオブジェクトを要素として含むリストを取得して、for文で順番に各_Cellを取得しています。
列のセルを順番に取得する
特定の列に含まれるセルを順番に取得したい場合は、以下のようなコードです。
doc = docx.Document(r'C:\temp\sample.docx')
tbl = doc.tables[0]
print(cel.text)
先ほどの1行目のセルを順番に取得するコードと考え方は同じで、column_cellsメソッドを使っている点のみが異なります。
最終更新日時:2023-04-17 12:54
- Newer:VBAで折れ線グラフの線の太さを
- Older:VBAでAnd演算子を使って条件を3つ以上指定する
Home » Python » python-docxの使い方 » python-docxでWord文書のセルを取得するさまざまな方法