用win32com python打开多个excel文件

有没有办法使用os.walk或glob来同样简化?

from win32com.client import Dispatch inputwb1 = "D:/apera/Workspace/Sounding/sounding001.xlsx" inputwb2 = "D:/apera/Workspace/Sounding/sounding002.xlsx" Sheet = 'OUTPUT' excel = Dispatch("Excel.Application") source = excel.Workbooks.Open(inputwb1) source.Worksheets(Sheet).Range('F1:H500').Copy() source.Worksheets(Sheet).Range('I1:K500').PasteSpecial(Paste=-4163) source = excel.Workbooks.Open(inputwb2) source.Worksheets(Sheet).Range('F1:H500').Copy() source.Worksheets(Sheet).Range('I1:K500').PasteSpecial(Paste=-4163) 

因为如果我想写几百个这个东西,这个东西会占用太多的空间。 感谢您的帮助提前

你似乎几乎回答了你自己的问题。 像这样的东西可能会做到这一点:

 import glob from win32com.client import Dispatch Sheet = 'OUTPUT' excel = Dispatch("Excel.Application") for filename in glob.glob("D:/apera/Workspace/Sounding/sounding*.xlsx"): source = excel.Workbooks.Open(filename) source.Worksheets(Sheet).Range('F1:H500').Copy() source.Worksheets(Sheet).Range('I1:K500').PasteSpecial(Paste=-4163) 

你可以像这样打开多个excel文件(例子):

 import win32com.client import os path = ('D:\\New Folder\\MyExcelFiles\\') fileslist = os.listdir('D:\\New Folder\\MyExcelFiles\\') xl = win32com.client.DispatchEx('Excel.Application') xl.Visible = True for i in fileslist : xl.Workbooks.Open(path+i) if xl.Cells.Find('2014'): xl.Cells.Replace('2015') xl.Save() xl.Workbooks.Close() else: xl.Workbooks.Close()