将工作簿中的工作表移动到末尾
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.
所述
使用 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.