2014-01-14 6 views
5

Ich habe ein Skript, das eine Reihe der folgenden Paare von Arbeitsblättern, um erzeugt:Kann die Reihenfolge der Arbeitsblätter in xlsxwriter geändert werden?

WorkSheet (holds data) -> ChartSheet using WorkSheet 

Nachdem das Skript fertig ist, bin ich links mit Arbeitsblättern bestellt als solche:

es
Data1, Chart1, Data2, Chart2, Data3, Chart3, ... 

Ist möglich, die Arbeitsblätter am Ende des Skripts neu zu ordnen (dh vor workbook.close()), um die folgende Arbeitsblatt-Reihenfolge in der endgültigen .xlsx-Datei zu erhalten?

Chart1, Chart2, Chart3,...,ChartN, Data1, Data2, Data3,... 

Antwort

8

Gerade Art workbook.worksheets_objs Liste:

import xlsxwriter 


workbook = xlsxwriter.Workbook('test.xlsx') 

sheet_names = ['Data1', 'Chart1', 'Data2', 'Chart2', 'Data3', 'Chart3'] 
for sheet_name in sheet_names: 
    workbook.add_worksheet(sheet_name) 

# sort sheets based on name 
workbook.worksheets_objs.sort(key=lambda x: x.name) 
workbook.close() 
+0

funktioniert einwandfrei, danke –

3

Es ist möglich, es zu tun, aber es ist nicht ratsam.

Jedes Arbeitsblatt verfügt über einen internen Index, der von Excel zum Verfolgen der Beziehung verschiedener Arbeitsmappenobjekte verwendet wird.

Das Sortieren der Arbeitsblätter funktioniert möglicherweise in einigen einfachen Fällen, aber für komplexere Arbeitsmappen kann dies zu Problemen führen.

+0

Gut zu wissen, ich hatte eine Ahnung, dass die Reihenfolge, in der ein Blatt hinzugefügt wurde, Bedeutung in der gesamten .xlsx Struktur hatte. –