[Python] data_only = True로 값을 전기합니다.

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

다음과 같은
〇〇시, △△시・・・와 지구마다의 평균 시급의 대장을 만들고 싶습니다.
평균 시급은 계산식으로 나타내고 있습니다.


여담:「#DIV/0!」대책





덧붙여서입니다만, 이쪽과 같이 아무것도 입력하고 있지 않거나 하면 「#DIV/0!」라고 표시되어 버리는 일이 없습니까.
이 표시, 「0」으로 나누고 있기 때문에 의미로 해서 수수하게 싫어요・・・.
대책으로서는
=IFERROR(計算式,"")

라고 써 주면・・・.


이런 느낌으로 표시가 사라집니다. 개인적으로 깔끔합니다!

cell.value 속성


cell(行番号,列番号).value

cell(1,1) == ws['A1']
cell(5,10) == ws['J5']

1 시작에서 셀의 주소를 설정할 수 있습니다.
반복 처리로, 행이나 열을 어긋나 갈 때에 편리하게 해 줄 것 같습니다.

lord_workbook 함수에서 data_only=True를 지정한다.



이번 문제는 수식이 아닌 계산 결과의 값을 읽고 싶기 때문에
lord_workbook(ファイル, data_only=True)

위와 같이 기술해 주면 계산 결과의 값을 읽어 줍니다.
다만, 그대로 Workbook.save등으로 저장해 버리면 수식도 지워 버리므로
다른 통합 문서에 전기 될 것이며 덮어 쓰지 않도록주의가 필요합니다.

cell.number_format에서 서식 설정 복사



이쪽은 수수한 곳입니다만, 시급의 평균치이므로 셀의 서식 설정도 통화입니다.
역시 여기는 서식 설정도 복사하고 싶네요!
이것은 셀의 number_fomat 속성으로 얻을 수 있습니다.
cell.number_format

이것들을 합쳐서 작성해 보면

read_cell.py
from pathlib import Path
from openpyxl import load_workbook, Workbook

wb_new = Workbook()
ws_new = wb_new.active
ws_new.title = '台帳'
ws_new.column_dimensions['A'].width = 20

path = Path('../地区別平均時給')
for i, file in enumerate(path.glob('*.xlsx')):
    wb = load_workbook(file, data_only=True)
    ws = wb['チェックリスト']

    row_no = i + 1
    # セルD23を転記
    ws_new.cell(row_no, 1).value = ws['D23'].value
    # セルL23を転記
    ws_new.cell(row_no, 2).value = ws['L23'].value
    # セルL23の表示設定をコピー
    ws_new.cell(row_no, 2).number_format = ws['L23'].number_format

wb_new.save('平均時給一覧.xlsx')

되었습니다.
개인적으로는 중요한 곳을 공부할 수 있었다고 우하우하하고 있습니다.

좋은 웹페이지 즐겨찾기