프로그래밍 언어/python

[xlwings] 파이썬으로 excel 파일 다루기 (2) 여러 개의 파일과 시트 다루기

이현찬 2022. 10. 4. 23:02
728x90

엑셀 작업을 할 때 여러 개의 파일이나 시트의 정보를 참조 및 활용해야 하는 경우가 있다. 이번 포스팅에서 새로운 시트를 만들거나 지우고, 하나의 파일에 있는 데이터를 다른 파일이나 시트에 옮기는 예시를 작성해보려고 한다.

시트 생성과 제거

  • workbook을 생성하고 파이썬을 통해 값과 수식을 입력해 계산한 값을 새로운 시트를 생성해 그 곳에 저장하는 예시를 작성했다.
  • line 7은 엑셀 프로그램을 실행하고 여러 개의 엑셀 파일을 효과적으로 다룰 수 있도록 해준다. 완성된 프로세스를 실제로 사용할 때 엑셀 창을 띄우지 않고 작업을 수행할 때는 반드시 필요하다.
  • line 9의 코드가 새로운 시트를 생성하는 코드이다. add의 argument로 after나 before로 새로 생성 될 시트의 위치를 지정해준다. 입력은 workbook의 특정 sheet를 입력으로 전달한다. 기본 값은 맨 앞에 생성하게 되고, 구현한 방식으로 몇 번째 위치에 생성할 지 지정할 수 있다.
  • line 19와 같이 특정 셀에 엑셀 함수를 전달할 수도 있고, 이후 코드와 같이 계산된 값을 python에 불러올 수도 있다.
  • line 29~line30으로 작업을 끝낸 파일을 저장하고 종료한다.

참고) excel 데이터 복사하기

  • sheet.range("cell").value로 접근시 서식은 가져오지 않고, 셀 안에 있는 데이터만 가지고 오게된다. 셀의 서식을 포함해 가져오길 원한다면 sheet.range("cell").copy()를 사용해 서식을 포함한 복사를 활용해야 한다.
  • 아래 A1:D5가 원본 데이터이고, (A) A7:D11는 sheet.range('cell').copy() & .paste()로 서식 포함 복사, (B) sheet.range('cell').value를 할당해 복사하는 코드이다.
  • 그 결과는 아래 이미지로 확인할 수 있다.
## 서식 포함 복사 --> A
sheet.range("A1:D5").copy()
sheet.range("A7").paste()

## 값만 복사 --> B
sheet.range("F7").value = sheet.range("A1:D5").value

다른 복사 방법 결과