【Python】comment 속성으로 셀의 코멘트를 취득한다
오늘의 주의(복습)는, 셀의 코멘트에 관해서입니다.
파이썬에서 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.pyfrom 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 메소드가 공부가 되었습니다.
Reference
이 문제에 관하여(【Python】comment 속성으로 셀의 코멘트를 취득한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rihu-do/items/25c0623cd81228054724
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# セルにコメントがあるかどうかを判定
cell.comment
# コメントがない場合
--> None
# コメントのテキストを取得
cell.comment.text
# コメントの作成者を取得
cell.comment.aouther
# コメントのテキストを取得
cell.comment = Comment(コメントのテキスト,コメントの作成者)
# コメントが挿入されているセル番地を取得
cell.coordinate
이번은 셀의 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 메소드가 공부가 되었습니다.
Reference
이 문제에 관하여(【Python】comment 속성으로 셀의 코멘트를 취득한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rihu-do/items/25c0623cd81228054724텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)