xlwings: как отсортировать таблицу Excel с заголовками?

У меня есть таблица Excel, которую я хотел бы отсортировать с помощью XlWings. В таблице есть строка заголовка. Я пробовал отсортировать так:

wb = xw.Book(file)
ws = wb.sheets[sheet]
ws.range(table).api.Sort(ws.range(table).api,SortOrder.xlAscending,)

Но при этом таблица сортируется таким образом, что данные заменяют заголовки, а строка заголовка оказывается внизу таблицы.

Следующее дает такие же результаты:

#Setting the range to include only the table data    
ws.range("Table1[#Data]").api.Sort(ws.range("Table1[#Data]").api,SortOrder.xlAscending)

#Specifying the range has a header 
ws.range(table).api.Sort(Key1=ws.range(table).api,Order1=1,Header="xlYes")

#manually excluding the header row from the range
ws.range('c4:n380').api.Sort(ws.range('c4:n380').api,SortOrder.xlAscending)

Я в своем уме. Итоговая таблица будет очень большой, поэтому я бы предпочел не записывать все это в фрейм данных, сортировать его там и переписывать, чтобы превзойти.


person Andre    schedule 11.02.2018    source источник


Ответы (1)


У меня такая же проблема с этими однострочниками. Строка заголовка продолжила сортировку и переместилась в последнюю строку. Вот как я решил это в Python (используя VBA ListObjects).

table1 = ws.api.ListObjects("Table1")
sort_range= ws.range("Table1[#Data]").api
table1.Sort.SortFields.Add(Key=sort_range)
table1.Sort.Apply()
person LuX    schedule 04.09.2019