对单元格范围进行排序,win32com.client

时间:2015-12-13 02:26:01

标签: python sorting range win32com

我正在尝试使用win32com在python中对一系列单元格进行排序:

enter image description here

我一直在使用的代码是:

sheet.Range("A1:B8").Sort(Key1=sheet.Range("B1"), Orientation=constants.xlAscending)

哪个有效。它按第二列对单元格范围进行排序:

enter image description here

当我想要时,是按降序排序而不是升序:

sheet.Range("B8:A1").Sort(Key1=sheet.Range("B1"), Orientation=constants.xlDescending)

但是由于一些奇怪的原因,它会切换每列的数据,而不会对最初在第二列中的值进行排序。

enter image description here

我使用了大量不同的参数类型来排序方法here,但似乎没有任何效果。有没有人有这种方法的经验,可以建议我如何让第二列排序降序?

1 个答案:

答案 0 :(得分:2)

您的方向参数应为:xlSortColumns = 1xlSortRows = 2。请参阅下面的Python脚本调整。正如Range.Sort Method所示, Order1 Order2 Order3 xlAscending = 1xlDescending = 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