天天看点

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)