【Python】comment 속성으로 셀의 코멘트를 취득한다

파이썬을 사용하여 Excel 파일 작업을 공부하고 있습니다.
오늘의 주의(복습)는, 셀의 코멘트에 관해서입니다.
파이썬에서 Excel을 조작하기 위해 openpyxl이라는 패키지를 사용하고 있습니다.



위와 같은 각 코멘트를 일람으로 남겨두고 싶습니다.

셀의 주석을 얻는 방법



우선 셀에 코멘트가 있을지 어떨지를 판정합니다
# セルにコメントがあるかどうかを判定
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 등의 인수를 생략하면 데이터가 들어있는 최대 위치까지 가져옵니다.

그건 그렇고, 행이 있다면 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 메소드가 공부가 되었습니다.

좋은 웹페이지 즐겨찾기