본문 바로가기

Web_Application/python

[python] excel 시트간 데이터 비교 후 서식으로 차이 표시



import sys
import io
import ctypes
import json
import win32api
import datetime
import pandas as pd

#엑셀이 설치되어 있어야하며 path가 지정되어 있어야한다.

wb = excel.Workbooks.Open('C:\\Users\\{{사용자계정}}\\Documents\\sample.xlsx')    
ws = wb.Worksheets("Sheet1")

ws.Range('A1').PasteSpecial()           #클립보드에 복사된 엑셀 데이터를 붙여넣기 한다.주석처리하고 수동으로 붙여넣기 해도 됨.
ws.Columns('A:Z').AutoFit()    

wb.WorkSheets.Add()

ws2 = wb.ActiveSheet
ws2.Name = "Sheet2"

ws2.Range('A1').PasteSpecial()         #비교할 자료를 클립보드에서 복사한다. 주석처리하고 수동으로 붙여넣기 해도 됨.
ws2.Columns('A:Z').AutoFit()

# sheet1 <-> sheet2 의 차이를 red 로 표시한다.
ws2.Range('A:Z').FormatConditions.Add(Type=2, Operator=8, Formula1="=A1<>Sheet1!A1", Formula2=None)
ws2.Range('A:Z').FormatConditions(1).Interior.Color = 255        #red
ws2.Range('A:Z').FormatConditions(1).Font.Color = 16777215       #white

now_datetime = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")

#최종 결과를 자동으로 저장한다. 
excel.ActiveWorkBook.SaveAs("C:\\Users\\{{사용자계정}}\\Documents\\{file_name}-{create_time}.xlsx".format(file_name="{{파일명}}",create_time=now_datetime))    
excel.DisplayAlerts = False    

wb.Close(False)

excel.Quit()
wb = None
ws = None
ws2 = None

excel_functions.close_excel_by_force(excel)