2017-04-24 10 views
1

Ich habe eine Berechnung, die eine Excel-Tabelle mit xlsxwriter erstellt, um Ergebnisse anzuzeigen. Es wäre nützlich, die Tabelle nach Kenntnis der Ergebnisse zu sortieren.Sortieren von Tabellen xlsxwriter für Python

Eine Lösung wäre, eine separate Datenstruktur in Python zu erstellen, die Datenstruktur zu sortieren und xlsx später zu verwenden, aber es ist nicht sehr elegant, erfordert eine große Menge an Datentyp-Handling.

Ich kann keine Möglichkeit finden, die Strukturen im xlsx-Modul zu sortieren. Kann jemand mit der internen Datenstruktur dieses Moduls helfen? Kann das sortiert werden, bevor man es auf die Festplatte schreibt. Eine andere Lösung wäre, die Datei erneut zu öffnen, das Material zu sortieren und es wieder zu schließen?

import xlsxwriter 
    workbook=xlsxwriter("Trial.xlsx") 
    worksheet=workbook.add_worksheet("first") 
    worksheet.write_number(0,1,2) 
    worksheet.write_number(0,2,1) 

    ...worksheet.sort 
+2

Sie sho Erstellen Sie Python-Datenstrukturen und sortieren Sie diese, bevor Sie sie in eine Arbeitsmappe schreiben. –

Antwort

3

Sie sollen Ihre Daten verarbeiten, bevor es zu einer Arbeitsmappe zu schreiben, das folgende Beispiel würde eine Spalte von Zahlen unsortiert schreiben:

import xlsxwriter 

workbook = xlsxwriter.Workbook("Trial.xlsx") 
worksheet = workbook.add_worksheet("first") 

data = [5, 2, 7, 3, 8, 1] 

for rowy, value in enumerate(data): 
    worksheet.write_number(rowy, 0, value)  # use column 0 

workbook.close() 

Aber wenn Sie zuerst die Daten wie folgt sortieren:

import xlsxwriter 

workbook = xlsxwriter.Workbook("Trial.xlsx") 
worksheet = workbook.add_worksheet("first") 

data = sorted([5, 2, 7, 3, 8, 1]) 

for rowy, value in enumerate(data): 
    worksheet.write_number(rowy, 0, value)  # use column 0 

workbook.close()  

Sie würde sich so etwas wie:

Sorted data in a single column

4

Kann jemand mit der internen Datenstruktur dieses Moduls helfen? Kann das sortiert werden, bevor man es auf die Festplatte schreibt.

Ich bin der Autor des Moduls und die kurze Antwort ist, dass dies nicht getan werden kann oder sollte.

Es ist möglich, Arbeitsblattdaten in Excel zur Laufzeit zu sortieren, aber das ist nicht Teil der Dateispezifikation, so dass es mit XlsxWriter nicht möglich ist. Eine Lösung wäre, eine separate Datenstruktur in Python zu erstellen, die Datenstruktur zu sortieren und später xlsx zu verwenden, aber es ist nicht sehr elegant, erfordert eine große Menge an Datentyp-Handling.

Das klingt wie eine vernünftige Lösung für mich.

+0

Nachdem ich die interne Struktur der Arbeitsblattdaten betrachtet habe, würde ich sagen, dass es möglich ist, aber ich habe bereits meine eigene Datenstruktur erstellt, also werde ich mich nicht darum kümmern. Gut lesbarer und kommentierter Code ist das aber. – Okapi575