为了账号安全,请及时绑定邮箱和手机立即绑定

如何将复制的工作表移动到第一个位置?

如何将复制的工作表移动到第一个位置?

繁华开满天机 2023-05-23 16:44:08
我想使用openpyxl. 但是,它默认将复制的工作表放在末尾。我想要它在前面。与 不同,不允许copy_worksheet指定位置create_sheet。我宁愿不必重新创建模板。我考虑过对工作表进行排序,但我不确定如何实现它。假设我有一个名为“空白”的现有工作表的文件number.xlsx,我想复制它。from openpyxl import load_workbookfrom datetime import datetimen = float(input("Number: "))today = datetime.now()m = today.monthd = today.dayy = str(today.year)wb = load_workbook('number.xlsx')if y in wb.sheetnames:    ws = wb[y]    ws.cell(row = 2 + d, column = 1 + m).value = n    wb.save('number.xlsx')else:    ws = wb.copy_worksheet(wb["blank"]) #I want the copied sheet at the front, not the back    ws.title = y    ws.cell(row = 2 + d, column = 1 + m).value = n    wb.save('number.xlsx')
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您可以move_sheet(sheet, offset=0)为此使用方法。这里的偏移量计算为“当前工作表索引”+偏移量。复制工作表会将工作表添加到工作簿的最后一个。所以你需要给负值才能将工作表移动到索引 0。


from openpyxl import load_workbook

    

wb = load_workbook("text.xlsx")

ws = wb.copy_worksheet(wb["sample"])

ws.title = "NewNameForCopiedSheet"

wb.move_sheet("NewNameForCopiedSheet", -(len(wb.sheetnames)-1))


查看完整回答
反对 回复 2023-05-23
?
偶然的你

TA贡献1841条经验 获得超3个赞

我正在发布一个例子


wb._sheets 是你用来控制标签/表格顺序的东西。获取要重新排列的工作表位置并修改具有新位置的工作表列表。


from openpyxl import Workbook

wb=Workbook()

# wb.create_sheet("Sheet")

wb.create_sheet("Sheet2")

wb.create_sheet("Sheet3")

wb.create_sheet("SheetA")

wb.create_sheet("ASheet")

wb.create_sheet("blank")

wb.save('book_original.xlsx')

blank_sheet_position = wb.worksheets.index(wb['blank'']) #get position of new sheet

blank_sheet_new_position = 0 #position where you want to move

sheets = wb._sheets.copy()

sheets.insert(blan_sheet_new_position, sheets.pop(blank_sheet_position))) #modifying the sheets list

wb._sheets = sheets

wb.save('book_myorder.xlsx')


查看完整回答
反对 回复 2023-05-23
  • 2 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信