Win32com

时间:2019-01-04 14:08:31

标签: python excel win32com

我尝试使用以下.py文件对Excel文件中的一行进行排序。我的样本数据是90 60 0 60 50 40 80 60 70 70 20,它们发生在我的excel文件的第一行中。您能帮我更正我的代码吗?预先感谢。

import win32com.client

wbk = 'C:\\Path\\To\\Workbook.xlsx'

xlApp = win32com.client.Dispatch("Excel.Application")
xlApp.Workbooks.Open(wbk)

xlAscending = 1
xlDescending = 2
xlSortColumns = 1
xlSortRows = 2    

xlApp.Sheets(1).Range("A1:K1").Sort(Key1=xlApp.Sheets(1).Rows(1), 
                      Order1=xlDescending, Orientation=xlSortRows)

xlApp.Quit
xlApp = None

1 个答案:

答案 0 :(得分:0)

我过去曾经这样做过,看看是否有帮助:

ws.UsedRange.AutoFilter()
ws.AutoFilter.Sort.SortFields.Clear
ws.AutoFilter.Sort.SortFields.Add(Key=ws.Range("E1"), SortOn=xlSortOnValues, Order=xlDescending, DataOption=xlSortNormal)
ws.AutoFilter.Sort.Header = xlYes
ws.AutoFilter.Sort.MatchCase = False
ws.AutoFilter.Sort.Orientation = xlTopToBottom
ws.AutoFilter.Sort.SortMethod = xlPinYin
ws.AutoFilter.Sort.Apply()

已更正:

ws.UsedRange.AutoFilter(1)
ws.AutoFilter.Sort.SortFields.Clear
ws.AutoFilter.Sort.SortFields.Add(Key=ws.Range("E1"), SortOn=xlSortOnValues, Order=xlDescending, DataOption=xlSortNormal)
ws.AutoFilter.Sort.Header = xlYes
ws.AutoFilter.Sort.MatchCase = False
ws.AutoFilter.Sort.Orientation = xlTopToBottom
ws.AutoFilter.Sort.SortMethod = xlPinYin
ws.AutoFilter.Sort.Apply()