Skip to content
컴퓨터잡담
2021.07.19 12:03

파이썬 엑셀 다루기 - openpyxl 사용법

조회 수 4871 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 

 

 

https://theheydaze.tistory.com/126

 

설치방법

pip install openpyxl

OpenPyXL sheet 열기 사용법

 

  1) import 모듈명

    - openpyxl

 

  2) 파일 열기 

    - openpyxl.load_workbook('파일명')

Ex) wb = openpyxl.load_workbook('./test.xlsx')

 

  3) 파일 닫기

    - close()

Ex) wb.close()

 

  3) sheet 열기 

    (1) index를 sheet이름으로하여 찾기(이게 더 좋다)

  - wb['sheet1'] 

  

    (2) get_sheet_by_name('Sheet1') 함수 이용(비 추천 pychame에서 경고 발생)

  - sheet = wb.get_sheet_by_name('Sheet1')

  

  4) 현재 열린 sheet를 열기

    - wb.actvie

Ex) sheet = wb.actvie

 

 

5. OpenPyXL cell 조작 사용법

 

  1) cell 접근 방법

    - sheet = wb['Sheet1'] 를 통해 우선 sheet 정보를 얻는다.

(1) cell의 index 를 이용한 방법

  >> A1 = sheet['A1'] 

  >> A1.value

  Sheet1 A1 value

(2) cell()함수를 이용

  - 파라미터로 row와 column을 사용한다.

  - 마지막 값이 존재하는 셀(row)    : sheet.max_row

  - 마지막 값이 존재하는 셀(column) : sheet.max_column

        Ex)

  >> A1 = sheet.cell(row = 1, column = 1)

  Sheet1 A1 value

(3) 전체 예제 코드

 

import openpyxl

wb = openpyxl.load_workbook('./test.xlsx')
sheet = wb['Sheet1']
print(sheet.cell(row=1, column=1).value)
print("%s" % sheet.max_column)
 

  2) 여러 cell 접근 하기

    (1) 특정 범위

  - cell_range = sheet['A1':'C2']

(2) 특정 row 

  - row10 = sheet[10]

(3) 특정 row 범위 

  - row_range = sheet[5:10]

(4) 특정 Column

  - colC = sheet['C']

(5) 특정 Column 범위

  - col_range = sheet['C:D']

        

Ex) 예제 코드

  - 전체 컬럼과 로우에 접근하느 코드

  

6. OpenPyXL 엑셀파일 생성

 

  1) workbook 생성

    - wb = openpyxl.Workbook() # workbook 함수을 통해 workbook 객체 생성 

                           # 생성시 기본적으로 sheet1이 생성된다. 

  2) sheet 생성

    - sheet2 = wb.create_sheet('sheet2') #마지막에 추가

    - sheet3 = wb.create_sheet('sheet3', 1) #sheet1 자리에 삽입 하여 추가

 

  3) sheet 이름 변경

    - sheet2.title = '업무자동화'

 

  4) workbook 저장   

    - wb.save('저장할 파일이름.xlsx') #워크북에 저장

    - wb.close() #파일 닫기

  

  Ex) 전체 코드 

 

    import openpyxl

 

    wb = openpyxl.Workbook()

    sheet2 = wb.create_sheet('sheet2')

    sheet3 = wb.create_sheet('sheet3', 1)

    sheet2.title = '업무자동화'

    wb.save('./new_test_file.xlsx')

    wb.close()

 

7. OpenPyXL 엑셀파일에 쓰기

 

  1) index를 이용하여 cell에 데이터 쓰기

    - sheet['A1'] = 'hello' #A1에 쓰기

 

  2) cell()함수를 이용하여 데이터 쓰기

    - sheet.cell(row = 1, column = 1, value='wolrd') # A1에 값쓰기

  

  * wb.save('./new_test_file.xlsx')를 사용하여 저장을 해야 완전히 반영된다.

 

8. OpenPyXL에서 지원하는 기능?

 

  - 거의 다 지원함으로 메뉴얼을 보시기 바랍니다. (https://openpyxl.readthedocs.io/en/stable/)

1. Excel 에 데이터 쓰기

        from openpyxl import Workbook

        # 엑셀파일 쓰기
        write_wb = 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")

        # 출처 https://myjamong.tistory.com/51

2. Excel 데이터 읽기

        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")
 
로그인 후 댓글쓰기가 가능합니다.

?

List of Articles
번호 분류 제목 날짜 조회 수
117 컴퓨터잡담 Div 사용한 클릭시 테이블 숨기고 감추기 1 2010.07.03 19994
116 컴퓨터잡담 메모리 사용계획 어떻게 할것인가? 2 2010.06.30 15370
115 컴퓨터잡담 정부의 부동산 재테크 실력은 부동산 경기침체 때 발휘한다. 2010.06.27 5708
114 컴퓨터잡담 IE 접속제어 후킹 1 2010.06.23 7395
113 컴퓨터잡담 여러개의 엑셀파일을 하나로 합치기 2 2010.06.22 57365
112 컴퓨터잡담 유동 IP시간 만료로 리부팅해야만 인터넷 사용가능한 장애원인 해결방법 2 2 file 2010.06.19 13765
111 컴퓨터잡담 Windows Firewall/Internet Connection Sharing (ICS) 서비스를 시작할 수 없습니다. 4 2010.06.19 20904
110 컴퓨터잡담 Windows와 DOS 명령 프롬프트 환경 변수 리스트 1 4 2010.06.18 11184
109 컴퓨터잡담 셀에 현재 날짜와 시간 삽입 2010.06.15 10275
108 컴퓨터잡담 엑셀 다중조건 구현하기 2010.05.13 17311
107 컴퓨터잡담 curl대신 사용할 수 있는 소스 3 2010.05.11 16314
106 컴퓨터잡담 배치파일 IF문 2010.05.07 11578
105 컴퓨터잡담 시스템은 멀쩡한데 느닷없이 mysql 접속거부의 이유는 max_connect_errors과의 연관성 2 2010.05.06 20892
104 컴퓨터잡담 [해킹차단]이런창이 뜨는 사이트들 정말 조심하길 바란다. 3 file 2010.05.04 22012
103 컴퓨터잡담 Mysql 에러메시지 2010.04.27 17524
102 컴퓨터잡담 Table_open_cache 가 늘어나지 않는 이유. 1 3 2010.04.27 15520
101 컴퓨터잡담 트위터 개발하기 3 2010.04.26 13794
100 컴퓨터잡담 블로그/사이트의 키워드 훔쳐보기^^;; 2010.04.21 9206
99 컴퓨터잡담 DB MyISAM, InnoDB 입출력 처리방식 3 2010.04.20 13812
98 컴퓨터잡담 서버에 SSD 교체 작업을 해야되나? 2010.04.20 6521
Board Pagination Prev 1 ... 39 40 41 42 43 ... 46 Next
/ 46

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소