유튜브 채널 분석 자동화! 파이썬으로 영상 정보 자동 수집하기
"매일 아침 어제 매출 데이터를 엑셀 양식에 입력해야 한다", "웹에서 수집한 데이터를 정해진 엑셀 서식에 맞게 채워 넣어야 한다", "매달 거래처 목록을 기준 시트에 업데이트해야 한다"…
정해진 엑셀 양식에 데이터를 반복 입력하는 작업은 단순하지만 시간이 많이 걸리고 오타나 누락 실수가 생기기 쉽습니다. 파이썬을 한 번만 세팅해두면 데이터를 원하는 셀에 정확하게 입력하고, 수식·서식·색상까지 자동으로 적용할 수 있습니다.
파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.
엑셀 데이터 입력에 필요한 라이브러리를 설치합니다. 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:
pip install openpyxl pandas
openpyxl은 .xlsx 파일을 읽고 쓰는 라이브러리입니다. 셀 값 입력뿐 아니라 서식, 색상, 수식, 열 너비, 행 높이까지 제어할 수 있습니다. pandas는 CSV나 다른 데이터 소스에서 데이터를 읽어올 때 사용합니다.
💡 이 코드로 할 수 있는 것: 특정 셀에 값 입력, 행 단위로 데이터 추가, 셀 서식(굵기·색상·정렬) 자동 적용, 수식 자동 입력, 기존 엑셀 파일에 데이터 추가(덮어쓰기 없이)까지 처리합니다.
아래 코드를 그대로 복사해서 메모장에 붙여넣고, excel_input.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter
from pathlib import Path
from datetime import datetime
# ① 설정
OUTPUT_PATH = r"C:\Users\내이름\Desktop\업무일지.xlsx" # ← 저장 경로
SHEET_NAME = "일별기록" # ← 시트 이름
# ② 입력할 데이터 (리스트 형태로 추가)
NEW_DATA = [
{
"날짜": datetime.now().strftime("%Y-%m-%d"),
"거래처": "A주식회사",
"담당자": "홍길동",
"매출금액": 5200000,
"납부상태": "완납",
},
{
"날짜": datetime.now().strftime("%Y-%m-%d"),
"거래처": "B기술연구소",
"담당자": "김철수",
"매출금액": 980000,
"납부상태": "미납",
},
]
# ③ 헤더 정의 (열 순서와 이름)
HEADERS = ["날짜", "거래처", "담당자", "매출금액", "납부상태"]
# ④ 스타일 정의
HEADER_FONT = Font(bold=True, color="FFFFFF")
HEADER_FILL = PatternFill(fill_type="solid", fgColor="2E5090")
CENTER_ALIGN = Alignment(horizontal="center", vertical="center")
BORDER_SIDE = Side(style="thin", color="CCCCCC")
CELL_BORDER = Border(left=BORDER_SIDE, right=BORDER_SIDE,
top=BORDER_SIDE, bottom=BORDER_SIDE)
# ⑤ 엑셀 파일 열기 (없으면 새로 생성)
output = Path(OUTPUT_PATH)
if output.exists():
wb = load_workbook(output)
if SHEET_NAME in wb.sheetnames:
ws = wb[SHEET_NAME]
else:
ws = wb.create_sheet(SHEET_NAME)
ws.append(HEADERS) # 헤더 추가
print(f" ✔ 기존 파일 열기 완료")
else:
wb = Workbook()
ws = wb.active
ws.title = SHEET_NAME
ws.append(HEADERS) # 헤더 추가
print(f" ✔ 새 파일 생성")
# ⑥ 헤더 서식 적용
for col_idx, header in enumerate(HEADERS, start=1):
cell = ws.cell(row=1, column=col_idx)
cell.font = HEADER_FONT
cell.fill = HEADER_FILL
cell.alignment = CENTER_ALIGN
cell.border = CELL_BORDER
# ⑦ 데이터 입력
start_row = ws.max_row + 1
for row_idx, record in enumerate(NEW_DATA, start=start_row):
for col_idx, key in enumerate(HEADERS, start=1):
cell = ws.cell(row=row_idx, column=col_idx, value=record.get(key, ""))
cell.alignment = CENTER_ALIGN
cell.border = CELL_BORDER
# 금액 열: 숫자 서식 적용
if key == "매출금액":
cell.number_format = "#,##0"
# 미납 상태: 빨간색 배경 강조
if key == "납부상태" and record.get(key) == "미납":
cell.fill = PatternFill(fill_type="solid", fgColor="FFD7D7")
cell.font = Font(color="CC0000", bold=True)
print(f" ✔ {row_idx}행 입력: {record.get('거래처', '')} / {record.get('날짜', '')}")
# ⑧ 열 너비 자동 조정
for col in ws.columns:
max_len = max((len(str(cell.value)) if cell.value else 0) for cell in col)
ws.column_dimensions[get_column_letter(col[0].column)].width = max_len + 4
# ⑨ 저장
wb.save(output)
print(f"\n✅ 완료! {len(NEW_DATA)}행 입력 → {OUTPUT_PATH}")
OUTPUT_PATH에 저장할 엑셀 파일 경로를 입력합니다. 파일이 없으면 자동으로 새로 생성됩니다.python excel_input.py
정상 실행 시 터미널에 이렇게 출력됩니다:
✔ 새 파일 생성 ✔ 2행 입력: A주식회사 / 2026-06-08 ✔ 3행 입력: B기술연구소 / 2026-06-08 ✅ 완료! 2행 입력 → C:\Users\내이름\Desktop\업무일지.xlsx
엑셀 파일을 열면 헤더에 파란 배경 서식이 적용되고, 미납 상태 셀은 빨간 배경으로 자동 강조됩니다. 금액 열은 쉼표 구분 숫자 서식이 자동 적용됩니다. 스크립트를 다시 실행하면 기존 데이터 아래에 새 데이터가 추가됩니다.
오류 1: PermissionError
저장하려는 엑셀 파일이 현재 열려 있을 때 발생합니다. 엑셀에서 해당 파일을 닫은 후 다시 실행하세요.
오류 2: 데이터가 헤더 위에 입력됨
기존 파일에서 시트는 있지만 헤더가 없는 경우 ws.max_row가 0을 반환해 1행부터 데이터가 입력될 수 있습니다. 이 경우 코드 ⑤에서 기존 시트를 열 때 헤더가 없으면 추가하도록 아래 코드를 삽입하세요:
if ws.max_row == 1 and ws.cell(1, 1).value is None:
ws.append(HEADERS)
오류 3: 한글이 깨져서 저장됨
openpyxl은 기본적으로 UTF-8을 사용하므로 한글 깨짐이 없습니다. 만약 깨진다면 코드 파일 자체의 인코딩이 UTF-8인지 확인하세요. 메모장으로 저장 시 인코딩을 반드시 UTF-8로 설정합니다.
코드 ②의 NEW_DATA를 직접 입력하는 대신, CSV나 다른 엑셀 파일에서 읽어와 자동으로 입력할 수 있습니다.
import pandas as pd # CSV에서 읽기 SOURCE_CSV = r"C:\Users\내이름\Desktop\입력데이터.csv" df = pd.read_csv(SOURCE_CSV, encoding="cp949") NEW_DATA = df.to_dict(orient="records") # 또는 다른 엑셀에서 읽기 SOURCE_XLSX = r"C:\Users\내이름\Desktop\원본데이터.xlsx" df = pd.read_excel(SOURCE_XLSX, engine="openpyxl") NEW_DATA = df.to_dict(orient="records")
💡 이전 게시글과 결합하면: 웹 데이터 자동 수집 편이나 주식·환율 자동 수집 편으로 수집한 데이터를 이 코드로 엑셀에 자동 입력하면, 데이터 수집부터 보고서 작성까지 완전 자동화 파이프라인을 완성할 수 있습니다.
이 코드를 응용하면 조건부 서식, 차트 자동 삽입, 여러 시트에 동시 입력하는 것도 가능합니다.