반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- vscode venv 설치
- pycdc.exe
- pywinauto
- pycdas.exe
- 네이버 로그인 하기
- Uipath 설치방법
- Selenium 셀렉터잡기
- 날짜 정규식
- 파이썬 네이버 로그인
- Uipath 기초
- 파이썬 환경설정
- 네이버커머스API
- 파이썬네이버부동산
- 가상환경설치
- 네이버매물크롤링
- venv 설치
- 네이버부동산크롤링
- UiPath
- 네이버 로그인 캡챠해결
- Element is not clickable at point
- pywinauto 윈도우
- 커머스API
- pywinauto 윈도우제어
- Python
- 파이썬 가상환경 설치방법
- 왕초보 파이썬 실행
- uipath 입문
- 네이버 로그인 영수증 해결
- selenium
- 파이썬 가상환경 설치
Archives
- Today
- Total
콘솔워크
두 엑셀파일을 비교하여, 다른 데이터가 있는 경우 색깔로 표시해주는 파이썬 코드 본문
반응형
import openpyxl
from openpyxl.styles import PatternFill
class CompareExcel:
def __init__(self, file_a, file_b, key_column, compare_columns):
self.file_a = file_a
self.file_b = file_b
self.key_column = key_column
self.compare_columns = compare_columns
self.wb1 = None
self.wb2 = None
self.ws1 = None
self.ws2 = None
self.yellow_fill = PatternFill(start_color="FFFFFF00", end_color="FFFFFF00", fill_type="solid")
def load_workbooks(self):
self.wb1 = openpyxl.load_workbook(self.file_a)
self.wb2 = openpyxl.load_workbook(self.file_b)
self.ws1 = self.wb1.active
self.ws2 = self.wb2.active
def find_column_index(self, column_name):
for cell in self.ws1[2]: # 두 번째 행부터 검색
if cell.value == column_name:
return cell.column
return None
def compare_rows(self):
key_column_index = self.find_column_index(self.key_column)
if key_column_index is None:
print(f"{self.file_a} 파일에 '{self.key_column}' 컬럼이 없습니다.")
return
compare_column_indexes = [self.find_column_index(column) for column in self.compare_columns]
if None in compare_column_indexes:
missing_columns = [
self.compare_columns[i] for i, index in enumerate(compare_column_indexes) if index is None
]
print(f"{self.file_a} 파일에 '{', '.join(missing_columns)}' 컬럼이 없습니다.")
return
for row in self.ws2.iter_rows(min_row=3): # 세 번째 행부터 비교 시작
key_value = row[key_column_index - 1].value
# A.xlsx에서 해당 키 값을 가진 행 찾기
for row1 in self.ws1.iter_rows(min_row=3): # 세 번째 행부터 검색
if row1[key_column_index - 1].value == key_value:
for i, column_index in enumerate(compare_column_indexes):
if row1[column_index - 1].value != row[column_index - 1].value:
row[column_index - 1].fill = self.yellow_fill
break
def save_workbook(self):
self.wb2.save(self.file_b)
def run(self):
self.load_workbooks()
self.compare_rows()
self.save_workbook()
# 사용 예시
if __name__ == "__main__":
A_EXCEL = r"C:\consolework\north-outdoor-crawler\output\20240509\노스\노스_남성-자켓&조끼-다운&패딩\노스_남성-자켓&조끼-다운&패딩_20240509_스스양식.xlsx"
B_EXCEL = r"C:\consolework\north-outdoor-crawler\output\20240509\노스\노스_남성-자켓&조끼-다운&패딩\노스_남성-자켓&조끼-다운&패딩_20240509_스스양식2.xlsx"
compare_excel = CompareExcel(
A_EXCEL, B_EXCEL, "판매자 상품코드", ["옵션값", "옵션가", "판매가", "옵션 재고수량", "재고수량"]
)
compare_excel.run()
해설
판매자 상품코드가 같은 행끼리 비교하여, 원하는 컬럼["옵션값".. 등]에 데이터가 변경된 경우 노랑색으로 표시해주는 코드입니다.
키 컬럼은 각 시트에 unique 값일 경우로 가정했습니다.
반응형
'프로그래밍 > python' 카테고리의 다른 글
셀레니움 크롬 개발자 도구 시크릿모드 복사붙여넣기 안됨 (1) | 2024.06.17 |
---|---|
python pyinstaller로 만든 exe 파일을 inno setup 6 버전으로 만들기(한글 설치) (0) | 2024.04.19 |
openpyxl 엑셀에 특정열이 없는 경우 오른쪽으로 하나씩 추가하는 코드 (0) | 2024.04.13 |
python 코드로 pnu(필지고유번호) 번호 만드는 방법 (0) | 2024.04.09 |
[FastAPI] 307 Temporary Redirect 오류 나는 원인 (0) | 2024.02.16 |