将工作簿中的工作表移动到末尾

Move worksheet within a workbook to the end

使用 xlwings,我试图将工作簿中的工作表移动到末尾。例如,工作簿包含以下工作表的集合:
Sheet1, Sheet2, Sheet3

如何将 Sheet1 移到 Sheet3 之后以获得以下顺序?
Sheet2, Sheet3, Sheet1

如果我将 ws1.api.Move(Before=ws3.api)Before 参数一起使用,该行将按预期工作,但它不会与 After 参数一起使用。参见示例代码:

import xlwings as xw

wb = xw.Book("test.xlsx")

ws1 = wb.sheets['Sheet1']
ws3 = wb.sheets['Sheet3']

ws1.api.Move(After=ws3.api)

我自己找到了解决方案,这个问题已经回答了here。您必须在 After 参数之前添加 None

import xlwings as xw

wb = xw.Book("test.xlsx")

ws1 = wb.sheets['Sheet1']
ws3 = wb.sheets['Sheet3']

ws1.api.Move(None, After=ws3.api)
# Or: ws1.api.Move(Before=None, After=ws3.api)

严格来说,这个问题似乎与 pywin32 的关系比与 xlwings 的关系更大,因为显然 .api 访问底层的 pywin32 对象,如 here.

所述