Files
static/lib/to_csv.py
KWON 7121f250bc feat: Flask 애플리케이션 모듈화 및 웹 대시보드 구현
- Flask Blueprint 아키텍처로 전환 (dashboard, upload, backup, status)
- app.py 681줄  95줄로 축소 (86% 감소)
- HTML 템플릿 모듈화 (base.html + 기능별 templates)
- CSS/JS 파일 분리 (common + 기능별 파일)
- 대시보드 기능 추가 (통계, 주간 예보, 방문객 추이)
- 파일 업로드 웹 인터페이스 구현
- 백업/복구 관리 UI 구현
- Docker 배포 환경 개선
- .gitignore 업데이트 (uploads, backups, cache 등)
2025-12-26 17:31:37 +09:00

44 lines
1.5 KiB
Python

import os, sys
import shutil
import pandas as pd
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from lib.common import get_logger
logger = get_logger("TO_CSV")
DATA_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "data"))
FINISH_DIR = os.path.join(DATA_DIR, "finish")
os.makedirs(FINISH_DIR, exist_ok=True)
def convert_excel_to_csv(filepath):
try:
logger.info(f"변환 시작: {os.path.basename(filepath)}")
df = pd.read_excel(filepath, header=1) # 2행이 헤더
df.columns = [col.strip() for col in df.columns]
csv_path = filepath + '.csv'
df.to_csv(csv_path, index=False, encoding='utf-8-sig')
logger.info(f"변환 완료: {os.path.basename(csv_path)}")
# 변환 완료된 원본 엑셀 파일 이동
dest_path = os.path.join(FINISH_DIR, os.path.basename(filepath))
shutil.move(filepath, dest_path)
logger.info(f"원본 엑셀 파일 이동 완료: {os.path.basename(dest_path)}")
except Exception as e:
logger.error(f"변환 실패: {os.path.basename(filepath)} - {e}")
def main():
files = [os.path.join(DATA_DIR, f) for f in os.listdir(DATA_DIR)
if (f.endswith(('.xls', '.xlsx')) and f.startswith("영수증별 상세매출"))]
logger.info(f"{len(files)}개 엑셀 파일 변환 시작")
for filepath in files:
convert_excel_to_csv(filepath)
logger.info("모든 파일 변환 완료")
if __name__ == "__main__":
main()