2015-12-13 83 views
1

我想排序的單元格區域中使用Python win32com:我一直在使用排序的單元格區域,win32com.client

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

我一噸的不同參數的發揮SOT類型的排序方法here但似乎沒有任何工作。有沒有人有這種方法的經驗,並可以建議如何得到第二列降序?

回答

2

您的方向參數應爲:xlSortColumns = 1xlSortRows = 2。請參閱下面的Python腳本調整。作爲Range.Sort Method所示,Order1Order2,和Order3xlAscending = 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         
+0

這是很棒的Parfait。這基本上讓我想要什麼,只有一個例外。我需要一個單元格範圍,而不是整列,所以採取你的建議,而不是xl.App.Columns(「A:B」),我用xlApp.Range(「A1:G9」)代替 – Mike

相關問題