본문 바로가기

프로그래밍

[python] openpyxl 사용일기 (설치,save, append)

openpyxl 설치

 

<pip를 통한 설치>

 

pip는 파이썬 패키지를 간편하게 설치해 주는 도구라고 하네요.

 

1. pip 설치, 업그레이드

 

시작 - cmd 화면에 들어가서, 아래 명령어를 입력합니다.

 

sudo apt-get install python-pip

 

 

위의 명령이 먹히지 않는다면, 아래의 명령어를 입력해줍시다.

 

pip install --upgrade pip

 

2. pip로 openpyxl 패키지 설치

 

pip install openpyxl

 

 

3. 설치 확인

 

파이썬을 열고, import openpyxl을 쳐보자.

 

에러가 나지 않는다면, openpyxl의 설치가 완료된 것이다!

 

 

--------------------------------------------------------------------

 

여러 엑셀 파일들을 참조하여 정리된 자료를 새 엑셀에 저장하고 싶었다.

 

문제가 생겼다. 마지막 자료만 저장되고, 앞의 자료들은 하나도 저장되지 않았다.

 

[문제의 코드 간략화]

 

 

accumulate_sum=0

 

for repeat in range(0, len(file_list)):

        import openpyxl

        excel_file = openpyxl.Workbook()

        excel_file.remove(excel_file.active)

 

        for i in range(0, len(name)):
                sheet.cell(row = 2+i+accumulate_sum, column = 1).value = name[i] # 자료를 엑셀에 입력한다.

 

        accumulate_sum += len(name) 

        excel_file.save(path2 + '[분석] '+ year + ' AUBL.xlsx')

        excel_file.close()

 

 

내가 원하는 것 - append(앞의 자료를 유지한 채 현재의 자료를 저장)

 

실제 코드로 이루어진 것 - save(앞의 자료를 다 날리고 최근 자료만 저장)

 

 

처음엔 sheet.cell이 문제라고 생각하여, sheet.cell.append, sheet.append, sheet.append.cell 등을 시도해보았으나,

모두 문법적으로 맞지 않는 코드라며 거절당했다.

 

몇 시간동안 고민 끝에 문제를 해결할 수 있었다.

 

내가 생각하는 문제의 이유 :

- 첫 번째 for문 안에서 openpyxl을 반복적으로 열고 있다.

- excel_file.remove(excel_file.active)로 활성화된 파일을 계속 지우고 있다.

- 엑셀 파일을 반복적으로 저장하고 끄고 있다.

 

[문제가 해결된 코드]

 

- for문 안에서 import openpyxl을 선언하지 않고, for문에 들어가기 전에 선언한다.

- 엑셀 파일은 for문이 종료된 후에 종료시킨다.

 

import openpyxl

excel_file = openpyxl.Workbook()

excel_file.remove(excel_file.active)

 

accumulate_sum=0

 

for repeat in range(0, len(file_list)):

        for i in range(0, len(name)): 
                sheet.cell(row = 2+i+accumulate_sum, column = 1).value = name[i] # 자료를 엑셀에 입력한다.

 

        accumulate_sum += len(name) 

        excel_file.save(path2 + '[분석] '+ year + ' AUBL.xlsx')

 

excel_file.close()

 

 

나와 같은 문제로 방황하던 누군가에게 도움이 됐길 바란다.

 

 

참고 사이트

openpyxl  설치

harryp.tistory.com/820

 

[Python] 파이썬에서 엑셀 다루기 1. openpyxl 설치

안녕하세요. 파이썬으로 엑셀 문서를 작성하는 방법을 알게되어 정리해보겠습니다. 파이썬으로 엑셀을 다룰 수 있는 여러 패키지가 있지만, 저는 openpyxl을 사용하였습니다. openpyxl을 사용하면 ��

harryp.tistory.com