2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】comment属性でセルのコメントを取得する

Posted at

pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、セルのコメントに関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。

image.png

上記のような各コメントを一覧で残しておきたいとします。

セルのコメントを取得する方法

先ずはセルにコメントがあるかどうかの判定をします

# セルにコメントがあるかどうかを判定
cell.comment
# コメントがない場合
--> None

コメントがあったら、下記のように取得します。

# コメントのテキストを取得
cell.comment.text

# コメントの作成者を取得
cell.comment.aouther

コメントを挿入することもできます。

# コメントのテキストを取得
cell.comment = Comment(コメントのテキスト,コメントの作成者)

コメントが挿入されている番地を取得する事も出来ます。

# コメントが挿入されているセル番地を取得
cell.coordinate

Worksheet.iter_rowsメソッド

今回はセルの1行目から順にコメントの有無を調べたいので、
Worksheet.iter_rowsメソッドを使用しました。

ws.iter_rows(min_row=最小の行番号,max_row=最大の行番号,
             min_col=最小の列番号,max_col=最大の列番号)

max_rowなどの引数を省略するとデータが入っている最大の位置まで取得してくれます。

ちなみに、rowsがあったら、colsもやっぱりあって

ws.iter_cols(min_col=最小の列番号,max_col=最大の列番号,
             min_row=最小の行番号,max_row=最大の行番号)

こちらで、列単位で順に取得してくれます。
これらをふまえて

read_comment.py
from openpyxl import load_workbook, Workbook
from openpyxl.comments import Comment

wb_new = Workbook()
ws_new = wb_new.active
ws_new.title = '説明一覧'

wb = load_workbook('日報.xlsx')
ws = wb.active

ws_new['B2'] = '説明内容'
ws_new['C2'] = '記入者'
ws_new['D2'] = 'セル番地'
ws_new.column_dimensions['B'].width = 40
row_count = ws_new.max_row
print(f'新規作成したシートの行数は{row_count}です。')

for row in ws.iter_rows(min_row=1):
    for cell in row:
        if cell.comment is None:
            continue
        row_count = row_count + 1
        ws_new[f'B{row_count}'] = cell.comment.text
        ws_new[f'C{row_count}'] = cell.comment.author
        ws_new[f'D{row_count}'] = cell.coordinate

ws_new['D2'].comment = Comment('説明があったセル番号', 'hogehoge')
wb_new.save('説明一覧.xlsx')

こんな感じで記述してみました。
個人的にはコメント取得よりも、Worksheet.iter_rowsメソッドの方が勉強になりました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?