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

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

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

?

  1. 06
    Aug 2016
    12:05

    Google SpeadSheet 조건에 맞는 데이터만 참조하여 가져오기(importrange, Query)

    Category[Docs]스프레드시트 Views13000
    Read More
  2. 17
    Jul 2016
    15:02

    Mysql 백업방법 및 MYISAM to INNODB 변경방법

    Category유용한상식 Views4468
    Read More
  3. 28
    Jun 2016
    00:37

    xe 타이틀 게시판 이름 없애기

    CategoryServer Views1859
    Read More
  4. 18
    Jun 2016
    12:55

    표도르의 최강 맷집력

    Category재미재미 Views6044
    Read More
  5. 09
    May 2016
    22:46

    곡성 나홍진 감독의 숨막히는 스릴공포

    Category연예정보 Views2413
    Read More
  6. 08
    May 2016
    23:17

    판타스틱 듀오 엑소 논란이유

    Category연예정보 Views4271
    Read More
  7. 24
    Apr 2016
    22:22

    복면가왕 음악대장 하연우 노래듣기

    Category연예정보 Views51403
    Read More
  8. 19
    Apr 2016
    19:49

    XE <title>제목 - 사이트명</title> 으로 변경방법

    CategoryServer Views2095
    Read More
  9. 18
    Apr 2016
    00:31

    반기문 김대중 감시보고활동 및 비판여론

    Category연예정보 Views7994
    Read More
  10. 24
    Mar 2016
    12:55

    MySQL 5.6 my.cnf 글로벌 변수인지 세션변수인지 확인

    CategoryServer Views1552
    Read More
  11. 18
    Mar 2016
    13:22

    서버 최적화 시키기(APACHE, PHP, MYSQL, XE 압축&캐싱&버퍼)

    CategoryServer Views6258
    Read More
  12. 05
    Mar 2016
    09:06

    손정의 소프트뱅크 회장 되새겨보는 쿠팡투자

    Category종교와철학 Views7010
    Read More
  13. 14
    Feb 2016
    01:21

    이승우 데뷔골 장식한 2016년 2월 13일 후베닐A VS A-Lleida 하이라이트

    Category연예정보 Views1104
    Read More
  14. 11
    Feb 2016
    06:59

    개성공단 중단으로 경제의 득실은?

    Category주식 Views923
    Read More
  15. 01
    Feb 2016
    05:19

    백승호 골(바로셀로나 후베닐A VS 사라고사)

    Category재미재미 Views4267
    Read More
  16. 27
    Jan 2016
    23:46

    북한 수소폭탄과 장거리 미사일 실험에 주가는?

    Category주식 Views856
    Read More
  17. 07
    Jan 2016
    23:44

    트랜지스터 and MOSFET 이용한 정전류 드라이버

    Category회로도전자부품 Views5898
    Read More
  18. 30
    Dec 2015
    04:17

    다이오드

    Category회로도전자부품 Views1356
    Read More
  19. 10
    Dec 2015
    23:46

    신화실업 홍보물 - 15000원이면 지르자.

    Category주식 Views2322
    Read More
  20. 05
    Dec 2015
    07:19

    중국의 유명한 인터넷 사이트

    Category유용한상식 Views862
    Read More
Board Pagination Prev 1 ... 3 4 5 6 7 ... 16 Next
/ 16

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소