본문 바로가기
일/Python

파이썬(python) - win32com 사용하여, excel file 읽기, 저장, csv로 저장하기

by 멜랑멀리 2021. 7. 7.
SMALL

 

Win32com 모듈 불러 오기

import win32com.client

Import 통해서 win32com.client 부분을 불러오시기 바랍니다.

 

 

엑셀 연결하고 파일 불러 오기

excel=win32com.client.Dispatch("Excel.Application")

workbook=excel.Workbooks.Open("fileName")

sheet=workbook.Sheets("sheetName")

 

엑셀에서 데이터 읽어오기 (row(행), column(열) 숫자로 표시)

 

read_data=sheet.Cells(row,column).Value

 

엑셀에 데이터  쓰기

 

sheet.Cells(row,column).Value = "Happy"

 

엑셀 화면에 표시하기

excel.Visible = True

 

파일 저장하고 파일 닫기

workbook.Close(savechanges=1)

변경사항 저장하지 않고 파일 닫기

workbook.Close(savechanges=0)

 

엑셀 종료하기

 

excel.quit()

 

 

예제 코드 : 

1. excel 로 저장한 file을 sheet 별로 csv로 저장하기(save_sheets_xls_to_csv)

2. 절대경로 잡기(os.abspath)

3. filename format이 다른 경우 처리 (current_path)

4. excel sheet에 글자쓰기, 읽기

5. 변경사항 파일 저장

 

 

import os
import win32com.client

def save_sheets_xls_to_csv(workbook,current_path):
    sheets = workbook.Worksheets
    for sheet in sheets:
        path = current_path + sheet.Name
        sheet.SaveAs(Filename=path, FileFormat=6) #CSV file format

if __name__ == "__main__":

    excel_name='Excel_Control_by_Python.xlsx'
    sheet_name="Sheet1"
    save=False


    current_path = os.getcwd().replace('\'','\\') + '\\'
    #print(current_path)
    #workbook=excel.Workbooks.Open(path+excel_name)


    excel_path=os.path.abspath(excel_name) #절대 경로 사용
    excel=win32com.client.Dispatch("Excel.Application")
    workbook=excel.Workbooks.Open(excel_path)
    sheet=workbook.Sheets(sheet_name)
    excel.Visible = True

    sheet.Cells(1, 1).Value = "Generation"
    read_data=sheet.Cells(1,1).Value
    print(read_data)

    save_xls_to_csv(workbook,current_path)

    if save:
        workbook.Close(SaveChanges=True)
    else:
        workbook.Close(SaveChanges=False)

    excel.quit()

 

결과 : 

<실행전>

<실행후>

 

 

fileformat 참조 : 

https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb241279(v=office.12) 

 

XlFileFormat Enumeration [Excel 2007 Developer Reference]

XlFileFormat Enumeration 06/14/2014 2 minutes to read In this article --> Specifies the file format when saving the worksheet. Version Information  Version Added:  Excel 2007 xlAddIn 18 Microsoft Excel 97-2003 Add-In xlAddIn8 18 Microsoft Excel 97-2003

docs.microsoft.com

 

참고 : excel to csv 저장 방법

https://stackoverflow.com/questions/49904045/win32com-save-as-variable-name-in-python-3-6

 

Win32Com Save As Variable Name in Python 3.6

I'm trying to loop through .xlsb file types in a folder and convert them to .csv in Python 3+ and Windows 10 and have pieced together the code below with help from SO. I want to save the new .csv a...

stackoverflow.com

 

참고 : 기본 문법 참조

https://appia.tistory.com/94?category=849954 

 

파이썬[Python] 014 Pywin32 설치

오늘은 pywin32모듈 설치 하는 방법에 대해서 살펴 보겠습니다. 많은 분들이 python을 사용하는 이유 중 하나는 업무에 있어서 반복적이고 지속적인 업무들에 대해 자동화 하기 위해서 사용 하는 분

appia.tistory.com

 

 

LIST