컴퓨터/Python

python 클립보드에서 엑셀파일 붙여넣기 win32

풍경소리^^ 2024. 11. 29. 17:23
import win32com.client
import pandas as pd
import sys
from pathlib import Path

def paste_df_to_excel(df, file_path, target_cell="A1", sheet_name="Sheet1"):
    try:
        # Excel 애플리케이션 객체 생성
        excel = win32com.client.Dispatch("Excel.Application")
        excel.Visible = False
        excel.DisplayAlerts = False  # 경고 메시지 표시 안 함
        
        # 파일 경로 확인
        file_path = Path(file_path).resolve()
        if not file_path.exists():
            raise FileNotFoundError(f"파일을 찾을 수 없습니다: {file_path}")
            
        try:
            # DataFrame을 클립보드에 복사
            df.to_clipboard(index=False,header=False)
            
            # 워크북 열기
            workbook = excel.Workbooks.Open(str(file_path))
            worksheet = workbook.Worksheets(sheet_name)
            
            # 대상 셀 선택 및 붙여넣기
            target_range = worksheet.Range(target_cell)
            target_range.PasteSpecial()
            
            # 저장
            workbook.Save()
            
        except Exception as e:
            print(f"작업 중 오류 발생: {str(e)}", file=sys.stderr)
            raise
        
        finally:
            # 워크북 닫기
            if 'workbook' in locals():
                workbook.Close(SaveChanges=True)
            # Excel 종료
            excel.Quit()
            
    except Exception as e:
        print(f"Excel 작업 중 오류 발생: {str(e)}", file=sys.stderr)
        raise
        
# 사용 예시
if __name__ == "__main__":
    # 테스트 데이터 생성
    # df = pd.DataFrame(
    #     [[3, 2, 5], [10, 0, 2], [6, 5, 3]],
    #     index=["이성계", "김유신", "이순신"],
    #     columns=["사과", "자두", "포도"]
    # )
    
    try:
        paste_df_to_excel(
            df=df3,
            file_path="./data/01vlookup.xls",
            target_cell="J5",
            sheet_name="Sheet1"
        )
        print("데이터가 성공적으로 붙여넣기 되었습니다.")
        
    except Exception as e:
        print(f"프로그램 실행 중 오류 발생: {str(e)}", file=sys.stderr)