Gibt es eine Möglichkeit, die Spalten aus einem Excel-Blatt zu nehmen, die Spalten als Listen zu schreiben, sie zu sortieren und sie dann in ein anderes Excel-Blatt umzuschreiben? Dies habe ich bisher versucht, aber es schreibt nur die letzte Datenspalte. Ich brauche die ersten 2 Datenzeilen nicht, da es sich nur um Header handelt.Sortieren von Spaltendaten aus Excel mit Python
import xlrd
import xlsxwriter
wb = xlrd.open_workbook('exceldata.xlsx')
ws = wb.sheet_by_index(0)
col=[]
for i in range(2,ws.ncols):
col=ws.col_values(i)
for x in range(2):
col.pop(0)
col.sort()
workbook = xlsxwriter.Workbook('test_sorting.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write_column('A1',col)
workbook.close()
UPDATE: Dies ist erfolgreich, aber weiß jemand, wie dies vereinfacht werden kann?
import xlrd
import xlsxwriter
wb = xlrd.open_workbook('exceldata.xlsx')
ws = wb.sheet_by_index(0)
col1=ws.col_values(2)
for x in range(2):
col1.pop(0)
col1.sort()
col2=ws.col_values(3)
for x in range(2):
col2.pop(0)
col2.sort()
col3=ws.col_values(4)
for x in range(2):
col3.pop(0)
col3.sort()
col4=ws.col_values(5)
for x in range(2):
col4.pop(0)
col4.sort()
col5=ws.col_values(6)
for x in range(2):
col5.pop(0)
col5.sort()
columns=[]
for i in range(2,7):
col=ws.col_values(i)
columns.append(col)
print(columns)
workbook = xlsxwriter.Workbook('test_sorting.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write_column('A2',col1)
worksheet.write_column('B2',col2)
worksheet.write_column('C2',col3)
worksheet.write_column('D2',col4)
worksheet.write_column('E2',col5)
workbook.close()
Sie müssen keine Werte eingeben. Sie können einfach Werte abrufen, die mit dem zweiten Element beginnen: 'ws.col_values (3, 1)' gibt eine Liste von Werten zurück, die mit D2 beginnen. Während ich denke, xlrd ist das beste Paket zum Lesen von Excel-Dateien, es hat nicht die beste Dokumentation. Sie sollten den xlrd-Abschnitt des alten [Tutorial-PDFs] (https://github.com/python-excel/tutorial) lesen. Ja, es ist veraltet, aber es ist immer noch besser als die "offizielle" xlrd-Dokumentation. –
Diese Schleife am Ende, die "Spalten" baut, ist die richtige Idee. Sie können 'columns' anstelle von' col1', 'col2' usw. verwenden. Beachten Sie, dass es sich bei" columns "zwar um eine Liste handelt, die darin enthaltenen Elemente aber auch Listen sind und somit individuell referenziert werden können. Zum Beispiel enthält 'columns [2]' in Ihrem obigen Code die gleichen Daten wie 'col3' (mit Ausnahme von Popping und Sortierung). Wie knallen und sortieren Sie die Daten in Spalten? Am einfachsten wäre es, das zu tun, was Sie tun müssen, bevor Sie es an "columns" anhängen, während Sie 'columns' aufbauen. –