对一系列单元格进行排序,win32com.client

Sort a Range of Cells, win32com.client

我正在尝试使用 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 但似乎没有任何效果。有没有人对这种方法有经验,可以建议我如何让第二列降序排列?

您的方向参数应该是:xlSortColumns = 1xlSortRows = 2。请参阅下面的 Python 脚本调整。正如 Range.Sort Method 所示,Order1Order2Order3 采用 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