天天看點

python3,用win32com操作excel及其宏填入資料運作宏操作

它相當于一個橋梁,連接配接python語言和c語言。其他操作excel的子產品也很多,比如xlwt、xwings。但是win32com功能更強大,可以操作word、調用宏等等等。

python2這個子產品是pywin32裡的,python3我找了很久發現是pypiwin32。

首先假設你的D盤裡有個hel.xlsm的excel檔案,字尾xlsm含義是改檔案裡帶宏,假設這個宏名叫“每日操作”。至于宏這些東西是一套c語言基礎的程式,可以用來代替手動操作excel。具體以後可能會更新。

#!/usr/bin/env python
# -*- coding: utf- -*-
import win32com
from win32com.client import Dispatch, constants
           

填入資料

def excel_open(file_path,results,sheet_name):
    xlApp = win32com.client.DispatchEx("Excel.Application")  #打開excel操作環境
    xlApp.Visible = True    #程序可見,False是它暗自進行
    xlApp.DisplayAlerts =    #不跳出來。
    xlBook = xlApp.Workbooks.Open(file_path,False)  #打開檔案,有時候會有警告框說由外部連結什麼的(與裡面公式有關),要點是則True,否則False
    sht = xlBook.Worksheets(sheet_name)  #找到要操作的sheet
    for i in range(len(results)):  # sheet資料,日期列格式為date
        for j in range(len(results[])):   
            sht.Cells(i + , j + ).Value =results[i][j]   #從第二行第二列開始填入資料。
    print("WRITE FINISHED")
    xlBook.Close(True)    #關閉該檔案,并儲存。不儲存就是False
    xlApp.quit()   #關閉excel操作環境。
           

運作宏

def useVBA(VBA):
    xlApp = win32com.client.DispatchEx("Excel.Application")
    xlApp.Visible = True
    xlApp.DisplayAlerts = 
    xlBook = xlApp.Workbooks.Open(file_path,False)
    xlBook.Application.Run(VBA) #宏
    xlBook.Close(True)
    xlApp.quit()
           

操作

results=((,,),(,,),(,,))    #這是要填入的資料,一個3*3元組
file_path="D:\hel.xlsm" #檔案
sheet_name="我還在想"
VBA="每日操作"
excel_open(file_path,results,sheet_name)
useVBA(VBA)