【问题标题】:Adding Excel Sheets to End of Workbook将 Excel 表格添加到工作簿末尾
【发布时间】: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.CountAfter=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


【解决方案1】:

尝试使用Sheet = excelApp.ActiveSheet

Book.Worksheets.Add(After=Sheet)
Sheet = Book.ActiveSheet
Sheet.Name = "Data1"

【讨论】:

  • 很抱歉,新工作表仍未出现在现有工作表的右侧。
【解决方案2】:

尝试通过添加Before = None来使用它:

add = Book.Sheets.Add(Before = None , After = Book.Sheets(book.Sheets.count))
add.Name = "Data1"

【讨论】:

  • @PPotreus,这就是您要寻找的答案。接受它作为最佳答案。
  • 原帖中的表格在哪里定义?
  • .Count 应该是大写的 C
【解决方案3】:

将 win32com.client 导入为 win32

xl = win32.gencache.EnsureDispatch('Excel.Application') xl.Sheets.Add(After=xl.ActiveSheet).Name ="Name_of_your_Sheet"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 2020-07-13
    相关资源
    最近更新 更多