openpyxl을 이용하여 특정 범위의 셀 복사

안녕하세요.
주로 엑셀을 이용해서 업무를 하는데,
그 중에 단순 반복 작업이 있어서 이걸 어떻게 하면 클릭 한 번에 할 수 있지 않을까 하여 퇴근 직후부터 지금까지 계속 구글링 해봤는데도 이건 쉽지 않네요..

DSD.xlsx라는 엑셀파일이 있고, 그 엑셀 파일에는 시트가 시트 이름 '1', '2', ... '20' 총 20개 있다고 가정할 경우에,
각각의 시트에는 글자와 숫자, 그리고 표 서식, 셀 병합서식까지 있는 상태입니다.

내용 있는 셀 범위가 A1:D10 이라고 가정할 경우에
같은 시트 내에 열 몇 개만 띄우고 G1:J10에 똑같은 내용과 서식으로 복붙을 하는 코드를 만들고자 하였습니다...

사실 머릿속으로는 엄청 쉽게 생각해서 예전에 간단한 것들 만들 때처럼 30분 정도 구글링 하다보면 만들어지겠지 싶었는데 이게 생각보다 내용도 안 나오고, 구현이 가능할지도 의문인 상황이 되어버렸네요..
일단 여러 시트에 같은 행동 반복하는 건 나중에 해결할 문제이고,
한 시트 내 데이터만이라도 복붙하는 것에 중점을 둬서

import openpyxl
from openpyxl import Workbook

wb = openpyxl.load_workbook('DSD.xlsx')
ws = wb.worksheets[3]

from openpyxl.utils import range_boundaries
min_col, min_row, max_col, max_row = range_boundaries('G1')

for row, row_cells in enumerate(wb['2'], min_row):
    for column, cell in enumerate(row_cells, min_col):

        ws.cell(row=row, column=column).value = cell.value
        ws.cell(row=row, column=column).style = cell.style

wb.save('DSD.xlsx')

위와 같은 코드까지는 어찌어찌 만들었습니다.
물론 이렇게 하니까 값은 제가 원한대로 끌고오는데 셀 스타일은 하나도 안 끌고 와지더라고요..
셀 병합은 물론이고요..
아래에서 두번째 줄에 .style은 그냥 구글링 하면서 이것저것 보다가 본 거 같아서 한 번 해봤는데 Run 했을 때 오류는 안 뜨는데 달라진 건 없는 거 같더라고요..

계속 찾고 또 찾아도 불가능할 거 같다는 답변 한 두 개만 보이고 좋은 해결방법은 보이지 않으니 괜히 무슨 수를 써도 안 되는 거 혼자 끙끙 앓고 있는가 하는 생각도 들기도 하고 고민 끝에 조심스럽게 질문 드려봅니다..

일단 시트 하나만 제 생각대로 가능하다는 게 보여지면 여러 시트에 한꺼번에 적용하는 건 제 실력이 부족할 지언정 절대 안 되는 건 아닌 거 같아서 어찌어찌 해볼 거 같다는 생각이 드는데 여기서 막혀버리면 너무 아쉬울 거 같아서요...

긴 글 읽어주셔서 감사합니다.

감사하는코딩 5578

M 2020년 10월 14일 5:22 오후

목록으로
3개의 답변이 있습니다. 1 / 1 Page

글 쓸 때는 Tab이 제대로 들어갔는데 저장하고 나니 tab 넣은 게 적용이 잘 안 되어 있네요. 두번째 for문부터 한 탭씩 띄워졌다고 생각하시고 보시면 됩니다

감사하는코딩

2020년 10월 14일 1:01 오전

마크다운은 소스를 표시할 때 ```를 위 아래로 넣어 주셔야 합니다. 본문은 제가 수정했어요. - 박응용님, 2020년 10월 14일 5:25 오후 추천 , 대댓글

검색해 보니 다음과 같은 해법이 보이네요.. 직접 해보지는 않았습니다.

https://stackoverflow.com/questions/23332259/copy-cell-style-openpyxl

박응용

2020년 10월 14일 5:28 오후

답변 감사합니다. 참고해서 따라해보니 이제 테이블 서식까지는 구현되네요. 병합셀이나 셀 너비 값은 좀 더 찾아봐야겠습니다. - 감사하는코딩님, 2020년 10월 14일 8:27 오후 추천 , 대댓글

dsd에서 동종업계분인가 했는데 맞군요.
저도 자회사 100개 짜리 패키지 취합 때문에 해당 내용을 고민 중인데 쉽지가 않습니다 ㅜㅜ

anstans

2020년 11월 7일 3:18 오후