【发布时间】:2017-03-03 22:50:08
【问题描述】:
我正在尝试将 excel 工作表添加到工作簿的末尾,保留第一个工作表作为摘要。
import win32com.client
Excel = win32com.client.DispatchEx('Excel.Application')
Book = Excel.Workbooks.Add()
Excel.Visible = True
Book.Worksheets(3).Delete()
Book.Worksheets(2).Delete()
Sheet = Book.Worksheets(1)
Sheet.Name = "Summary"
Book.Worksheets.Add(After=Sheet)
Sheet = Book.Worksheets(2)
Sheet.Name = "Data1"
尽管使用了After=Sheet,但此代码将新工作表添加到左侧,并且当我修改名为“Data1”的工作表时,它会覆盖名为“Summary”的工作表。
这和这个问题类似:
Adding sheets to end of workbook in Excel (normal method not working?)
但是给定的解决方案对我不起作用。
【问题讨论】:
-
代替
After = Sheet,试试After = Sheets.Count(我不太喜欢PythonVBA,但你要确保在最后一张表之后添加它。 -
当您尝试给定的解决方案时会发生什么?
-
After=Book.Worksheets.Count和After=Book.Sheets(Book.Sheets.Count)都不起作用。它们给出的行为与上述相同。 -
另一个有趣的异常是,当我使用
Sheet.Move(After = Sheets.Count)或类似名称时,它会将工作表移动到新工作簿。 -
在 VBA 中,我使用
Sheets.Add, Sheets(Sheets.Count)作为在末尾添加工作表的快捷方式...所以在 Python 中使用 'that'。 (我认为在这种情况下你只需要添加三个book对象。)
标签: python excel python-2.7 win32com