我正在尝试使用win32com在python中对一系列单元格进行排序:
我一直在使用的代码是:
sheet.Range("A1:B8").Sort(Key1=sheet.Range("B1"), Orientation=constants.xlAscending)
哪个有效。它按第二列对单元格范围进行排序:
当我想要时,是按降序排序而不是升序:
sheet.Range("B8:A1").Sort(Key1=sheet.Range("B1"), Orientation=constants.xlDescending)
但是由于一些奇怪的原因,它会切换每列的数据,而不会对最初在第二列中的值进行排序。
我使用了大量不同的参数类型来排序方法here,但似乎没有任何效果。有没有人有这种方法的经验,可以建议我如何让第二列排序降序?
答案 0 :(得分:2)
您的方向参数应为:xlSortColumns = 1
或xlSortRows = 2
。请参阅下面的Python脚本调整。正如Range.Sort Method所示, Order1 , Order2 和 Order3 取xlAscending = 1
或xlDescending = 2
个值。
import win32com.client
wbk = 'C:\\Path\\To\\Workbook.xlsx'
xlApp = win32com.client.Dispatch("Excel.Application")
xlApp.Workbooks.Open(wbk)
xlAscending = 1
xlSortColumns = 1
xlApp.Sheets(1).Columns("A:B").Sort(Key1=xlApp.Sheets(1).Range("B1"),
Order1=xlAscending, Orientation=xlSortColumns)
xlApp.Quit
xlApp = None