openpyxl

윤윤·2023년 3월 27일

이번에 업무하면서 파이썬으로 엑셀 목록 자동화하는 것을 해보았음!
취뽀 이틀만에 프로젝트 주셔서... 너무나 감사했습니다..
네... 정말로 감사했습니다...🙊

어쨌거나, 업무하면서 유용한 파이썬 라이브러리를 알게 되었으니..

'openpyxl'두둥!

설치방법

pip install openpyxl
from openpyxl import Workbook

wb = Workbook() # 비어있는 객체 만들기
ws = wb.active

workbook.active를 통해 워크시트를 활성화 할 수 있음.

1. excel에 데이터 만드는 방법 'workbook'

from openpyxl import Workbook

        # 이름이 있는 시트를 생성
        write_ws = write_wb.create_sheet('생성시트')

        # Sheet1에다 입력
        write_ws = write_wb.active
        write_ws['A1'] = '숫자'

        #행 단위로 추가
        write_ws.append([1,2,3])

        #셀 단위로 추가
        write_ws.cell(5, 5, '5행5열')
        write_wb.save("C:/Users/Administrator/Desktop/기준/프로그래밍/과제대행/주식데이터크롤링/숫자.xlsx") # 본인 주소

ws1 = wb.create_sheet("시트1") # 끝에 삽입 (기본값)
ws2 = wb.create_sheet("시트2", 0) # 첫 번째 위치에 삽입
ws3 = wb.create_sheet("시트3", -1) # 끝에서 두 번째 위치에 삽입

wb.sheetnames로 시트의 이름들을 확인 할 수 있음.
Worksheet.title 속성으로 워크시트의 이름을 변경할 수 있음.
wb.copy_worksheet(source)으로 워크시트를 복사할 수 도 있음.

2. excel 데이터 읽기 'load_workbook'

        from openpyxl import load_workbook


        # data_only=True로 해줘야 수식이 아닌 값으로 받아온다. 
        load_wb = load_workbook("C:/Users/Administrator/Desktop/기준/프로그래밍/과제대행/주식데이터크롤링/output.xlsx", data_only=True)
        # 시트 이름으로 불러오기 
        load_ws = load_wb['Sheet1']

        # 셀 주소로 값 출력
        print(load_ws['B2'].value)

        # 셀 좌표로 값 출력
        print(load_ws.cell(3, 2).value)


        # 지정한 셀의 값 출력

        get_cells = load_ws['B3' : 'B6']
        for row in get_cells:
            for cell in row:
                print(cell.value)

        # 모든 행 단위로 출력

        for row in load_ws.rows:
            print(row)

        # 모든 열 단위로 출력

        for column in load_ws.columns:
            print(column)

        # 모든 행과 열 출력

        all_values = []
        for row in load_ws.rows:
            row_value = []
            for cell in row:
                row_value.append(cell.value)
            all_values.append(row_value)
        print(all_values)

        load_ws.cell(3, 3, 51470)
        load_ws.cell(4, 3, 21470)
        load_ws.cell(5, 3, 1470)
        load_ws.cell(6, 3, 6470)
        load_wb.save("C:/Users/Administrator/Desktop/기준/프로그래밍/과제대행/주식데이터크롤링/output.xlsx") # 본인 주소

2-1. 다중 셀 접근

다중 셀에 들어갈 때 슬라이싱으로 접근할 수 있음

cell_range = ws['A1':"C2"]
cell_range

worksheet.iter_rows()메서드를 통해 행을 가져올 수도 있음.

for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
    for cell in row:
        print(cell)

Worksheet.iter_cols()를 통해 열도 가져올 수 있음.

for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
    for cell in col:
        print(cell)

성능 상의 이유로 Workbook.iter_cols() 메서드는 읽기 전용 모드에서 사용할 수 없음.

파일의 모든 행이나 열을 반복해야 하는 경우 Worksheet.rows 속성을 대신 사용함.

ws = wb.active
ws['C9'] = "Hello World"
tuple(ws.rows)

혹은 Worksheet.columns 속성을 통해 열도 추출 가능

tuple(ws.columns)

3. save

파일로 저장
:xlsx, xlsm으로 저장하는 경우가 많음.

wb = Workbook()
wb.save("document.xlsx")

템플릿 파일로 저장
문서 -> 템플릿

from openpyxl import load_workbook
wb = load_workbook("document.xlsx")
wb.template = True
wb.save("template.xltx")

템플릿 -> 문서

wb = load_workbook("template.xltx")
wb.template = False
wb.save("document.xlsx")

뭐 파이썬으로 ppt 하는 방법도 있다는데... 시간 되면 정리해봐야징

참조: [https://wooiljeong.github.io/python/openpyxl-tutorial/ ]

profile
조급하지 않게 천천히 하나하나 알아간다는 기쁨으로!

0개의 댓글