测试了好几天,终于做出来了。
一开始用xlwings是来做,设置后台关闭总是报错,如果不是我写错的话,大概率是并非所有的vba的api都被xlwings可用、
用win32com很ok。
import os
import win32com.client
os.chdir(r'C:\kiki')
#遍历文件夹下的文件夹
excel = win32com.client.Dispatch('Excel.Application')
excel.Visible = False
excel.DisplayAlerts = False
for dir,folder,files in os.walk(os.getcwd()):
for file in files:
name = os.path.join(dir, file)
if name.endswith('xlsx'):
print(file)
wb = excel.Workbooks.Open(name)
#关闭后台刷新
for con in wb.Connections:
con.OLEDBConnection.BackgroundQuery = False
wb.RefreshAll()
wb.Save()
wb.Close()
excel.DisplayAlerts = True
#必须设置后台刷新关闭,才能保证刷新完pq再保存
print('Done')