[英]Python - Win32com - Open Workbook & Create a New Excel File for Each Tab
我有一個 MS Excel 工作簿,我想打開它,然后循環瀏覽選項卡並為原始工作簿中的每個選項卡創建和保存一個工作簿。 所以我打開文件 A,有選項卡 1、2、3,然后創建並保存文件 B、C、D,每個文件都有一個唯一的選項卡。 我有 VBA 的代碼,它創建了一個工作表的單個副本,但是當我嘗試在 Python 中執行此操作時,我最終得到了每個工作簿中的所有選項卡。 以下是有效的 VBA:
Sub ConvertTabsToFiles()
Dim currPath As String
currPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each xWs In ThisWorkbook.Sheets
xWs.Copy
Application.ActiveWorkbook.SaveAs Filename:=currPath & "\" & xWs.Name & ".xlsx"
Application.ActiveWorkbook.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
以下是不起作用的 Python 代碼:
xlApp = win32.com.client.Dispatch("Excel.Application")
xlwb = xlApp.Workbooks.Open("C:\Inputfile.xlsx")
for sheet in xlwb.Worksheets:
sheet.Copy
xlApp.ActiveWorkbook.SaveAs("C:\Users\user\AppData\Local\Temp\\"+ sheet.Name+".xlsx")
非常感謝您的幫助,我很難過。 提前致謝。
您可以通過 SaveAs 方法保存單個工作表:
for sheet in xlwb.Worksheets:
filename = r"C:\Users\user\AppData\Local\Temp\" + sheet.Name + ".xlsx"
sheet.SaveAs(filename)
print('Saved sheet to', filename)
注意我將 'r' 前綴放在字符串中,否則反斜杠會被 Python 解釋為特殊字符,除非加倍混淆了字符串。
感謝 Schollii,我得以走上正軌。 以下是對我有用的內容,希望對您有所幫助:
for sheet in xlwb.Worksheets:
xlApp = win32com.client.Dispatch("Excel.Application")
nwb = xlApp.WorkbookAdd()
sheet.Copy(Before=nwb.Sheet(1))
nwb.SaveAs("C:\Users\user\AppData\Local\Temp\\" +sheet.Name+ ".xlsx")
nwb.Close(True)
謝謝大家。 特別是 Schollii 讓我走上正軌。 也感謝 TankorSmash 的回答。
對於較新版本的 excel,代碼從
xlApp.WorkbookAdd()
到
xlApp.Workbooks.Add()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.