728x90
반응형
기능
2차원 리스트의 원소를 이용하여 세로로 같은 값을 가진 셀을 병합한다.
이 내용은 이전글인 [ 2022.04.22 - [집중 - 어제보다 나아가자/[개발] 파이썬 🍕] - [파이썬] openpyxl 엑셀에 2차원 리스트 원소 저장 ] 을 참고하자.
이전 글에서 2차원 리스트의 원소를 엑셀에 저장하고, 이 글에서는 세로로 같은 값을 가지는 셀을 병합한다.
구현
#엑셀 세로로 같은 내용이면 병합
for col in range(cols):
str_cur = str_next = ''
start_row = end_row = 0
for row in range(rows):
try: #키 값이 존재하는지 확인
key = list_path_splited[row][col] #존재한다면 키값 받기
if row < rows - 1: #만약 다음 행이 있다면 다음 키 값도 받기
try:
key_next = list_path_splited[row + 1][col] #다음 키 값이 존재하는지 확인
except:
key_next = '' #존재하지 않는다면 다음 키 값은 공백
else:
key_next = '' #만약 다음 행이 없다면 다음 키 값은 공백
except: #키 값이 없으면
key = '' #키 값은 공백
#continue #넘어가기
else: #키 값이 있으면
if str_cur != key: #키 값이 달라지면 키 값과 인덱스 값 저장
str_cur = key
idx_cur = row
str_next = key_next #그리고 다음 키와 인덱스 값 저장
idx_next = row + 1
#str_cur과 str_next이 다르고 and idx_cur - idx_next 차이가 2 이상일 때
if str_cur != str_next and (idx_next - idx_cur) >= 2:
#print('--------------ws.merge_cells(start_row = %d, start_column = %d, end_row = %d, end_column = %d)--------------' % (idx_cur + 1, col+1,idx_next,col+1))
ws.merge_cells(start_row = idx_cur + 1, start_column = col + 1, end_row = idx_next, end_column = col + 1)
str_cur = str_next
idx_cur = idx_next
fileName = 'test_list_path_merge.xlsx'
wb.save(filename=fileName)
결과
728x90
반응형
'배움 - 차근차근 기록하자 > [개발] 파이썬 🍕' 카테고리의 다른 글
[파이썬] openpyxl 셀 속성 변경 (테두리 지정, 가로 세로 맞춤) (0) | 2022.04.26 |
---|---|
[파이썬] openpyxl 하이퍼링크 만들기 (0) | 2022.04.25 |
[파이썬] openpyxl 엑셀 열 너비 자동 조절 (0) | 2022.04.23 |
[파이썬] openpyxl 엑셀에 2차원 리스트 원소 저장 (0) | 2022.04.22 |