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

我想使用openpyxl. 但是,它默认将复制的工作表放在末尾。我想要它在前面。与 不同,不允许copy_worksheet指定位置create_sheet。我宁愿不必重新创建模板。


我考虑过对工作表进行排序,但我不确定如何实现它。


假设我有一个名为“空白”的现有工作表的文件number.xlsx,我想复制它。


from openpyxl import load_workbook

from datetime import datetime


n = float(input("Number: "))


today = datetime.now()

m = today.month

d = today.day

y = 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')


繁华开满天机
浏览 431回答 2
2回答

蓝山帝景

您可以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))

偶然的你

我正在发布一个例子wb._sheets 是你用来控制标签/表格顺序的东西。获取要重新排列的工作表位置并修改具有新位置的工作表列表。from openpyxl import Workbookwb=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 sheetblank_sheet_new_position = 0 #position where you want to movesheets = wb._sheets.copy()sheets.insert(blan_sheet_new_position, sheets.pop(blank_sheet_position))) #modifying the sheets listwb._sheets = sheetswb.save('book_myorder.xlsx')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python