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

问题描述 投票:1回答:1

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

enter image description here

我一直在使用的代码是:

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

这是有效的。它按第二列对单元格范围进行排序:

enter image description here

当我想要时,是按Descending而不是Ascending排序:

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

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

enter image description here

我玩了很多不同的参数类型sot排序方法here但似乎没有任何工作。有没有人有这种方法的经验,可以建议我如何让第二列排序降序?

python sorting range win32com
1个回答
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                                 
© www.soinside.com 2019 - 2024. All rights reserved.