Python 是否通过一个启用宏的工作簿一次一个地处理多个Excel工作簿?
好的,我有一个工作簿,它处理所有导出工作簿中的数据。我需要获取每个新的导出工作簿,并按提交时的时间顺序逐个运行处理工作簿,然后将完成的工作簿重命名为原始名称 我有一个脚本,可以通过处理书籍运行导出,并将其导出到完成的书籍。但我似乎不知道如何将上传的工作表排成队列,一次浏览一张,并在完成的书中保留原始工作表名称。下面是gui和处理脚本的代码 如果有人能给我指出正确的方向,我将不胜感激Python 是否通过一个启用宏的工作簿一次一个地处理多个Excel工作簿?,python,excel,python-3.x,vba,win32com,Python,Excel,Python 3.x,Vba,Win32com,好的,我有一个工作簿,它处理所有导出工作簿中的数据。我需要获取每个新的导出工作簿,并按提交时的时间顺序逐个运行处理工作簿,然后将完成的工作簿重命名为原始名称 我有一个脚本,可以通过处理书籍运行导出,并将其导出到完成的书籍。但我似乎不知道如何将上传的工作表排成队列,一次浏览一张,并在完成的书中保留原始工作表名称。下面是gui和处理脚本的代码 如果有人能给我指出正确的方向,我将不胜感激 #gui from tkinter import filedialog from tkinter import *
#gui
from tkinter import filedialog
from tkinter import *
import wx
import shutil
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='BIMgen Employee Portal')
panel = wx.Panel(self)
my_sizer = wx.BoxSizer(wx.VERTICAL)
my_btn = wx.Button(panel, label='Select Export')
my_btn.Bind(wx.EVT_BUTTON, self.on_press)
my_sizer.Add(my_btn, 0, wx.ALL | wx.CENTER, 5)
panel.SetSizer(my_sizer)
self.Show()
def on_press(self, event):
root = Tk()
root.filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
print (root.filename)
print(print (root.filename))
shutil.copy(root.filename, "C:/Users/tyler/Desktop/Beef Web/Queue")
wx.MessageBox(root.filename, 'Export Uploaded & Queued',
wx.OK | wx.ICON_INFORMATION)
if __name__ == '__main__':
app = wx.App()
frame = MyFrame()
app.MainLoop()
解决了。这是我使用的代码。只是一个简单的for循环
import win32com.client
import openpyxl
from openpyxl import load_workbook
import shutil
import os, subprocess
for filename in os.listdir(input):
xl=win32com.client.Dispatch('Excel.Application')
print("Getting file....")
ini=xl.Workbooks.Open(input + '/' + filename)
print("Complete.")
print("Uploading Data To input sheet....")
ini.Sheets('Sheet1').Range('A2:K100000').Copy()
EXP.Sheets('Export').Paste(EXP.Sheets('Export').Range('A2'))
print("Complete.")
CopyIn_run_macros()
print("Adding sheets to upload....")
ini.Close(True)
wb = load_workbook(input + '/' + filename)
wb.create_sheet("E1")
wb.create_sheet("231")
wb.create_sheet("BIMgen")
wb.save(input + '/' + filename)
del xl
xl=win32com.client.Dispatch('Excel.Application')
ini=xl.Workbooks.Open(input + '/' + filename)
print("Complete.")
print("Exporting BeefCake data to upload....")
FIN.Sheets('E1').Range('A1:T100000').Copy()
ini.Sheets('E1').Paste(ini.Sheets('E1').Range('A1'))
FIN.Sheets('BIMgen').Range('A1:H100000').Copy()
ini.Sheets('BIMgen').Paste(ini.Sheets('BIMgen').Range('A1'))
FIN.Sheets('231').Range('A1:AG100000').Copy()
ini.Sheets('231').Paste(ini.Sheets('231').Range('A1'))
ini.Close(True)
print("Complete.")
print("Moving Upload to Output")
shutil.move(input + '/' + filename, output)
print("Complete.")
import win32com.client
import openpyxl
from openpyxl import load_workbook
import shutil
import os, subprocess
for filename in os.listdir(input):
xl=win32com.client.Dispatch('Excel.Application')
print("Getting file....")
ini=xl.Workbooks.Open(input + '/' + filename)
print("Complete.")
print("Uploading Data To input sheet....")
ini.Sheets('Sheet1').Range('A2:K100000').Copy()
EXP.Sheets('Export').Paste(EXP.Sheets('Export').Range('A2'))
print("Complete.")
CopyIn_run_macros()
print("Adding sheets to upload....")
ini.Close(True)
wb = load_workbook(input + '/' + filename)
wb.create_sheet("E1")
wb.create_sheet("231")
wb.create_sheet("BIMgen")
wb.save(input + '/' + filename)
del xl
xl=win32com.client.Dispatch('Excel.Application')
ini=xl.Workbooks.Open(input + '/' + filename)
print("Complete.")
print("Exporting BeefCake data to upload....")
FIN.Sheets('E1').Range('A1:T100000').Copy()
ini.Sheets('E1').Paste(ini.Sheets('E1').Range('A1'))
FIN.Sheets('BIMgen').Range('A1:H100000').Copy()
ini.Sheets('BIMgen').Paste(ini.Sheets('BIMgen').Range('A1'))
FIN.Sheets('231').Range('A1:AG100000').Copy()
ini.Sheets('231').Paste(ini.Sheets('231').Range('A1'))
ini.Close(True)
print("Complete.")
print("Moving Upload to Output")
shutil.move(input + '/' + filename, output)
print("Complete.")