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
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기