用Datanitro对Excel范围进行sorting

我正在尝试使用Datanitro在Excel中对一系列单元格进行sorting。 它看起来不像Datanitro有一个内置的sorting方法,所以我的select是要么在Python中创build一个,这是datanitro似乎在这里做了什么 ,或者使用内置的VBA方法,并从python调用该方法通过datanitro。

一个简单的VBAsorting子程序如下:

Sub Sort_1(strDataRange As Range, keyRange As Range) strDataRange.Sort Key1:=keyRange, Header:=xlNo, Order1:=xlDescending End Sub 

现在我只需要从python调用这个,并传递子例程两个Range对象。 但是,我的python shell中的下面的代码产生一个NameError:'Range'没有被定义

 VBA('Sort_1', [Range('A5:IF20'), Range('M5')]) 

此外,如果将两个参数作为string传递,我将得到一个NitroException:未能运行excelmacros,大概是因为该子例程需要Range对象而不是string。

一个简单的解决方法是定义子程序中的范围,但是不能用我的python代码中的variables来dynamic变化。

有什么build议么? 我宁愿去VBA路由,因为该方法已经在VBA中很好的定义了,我不必浪费时间创build任何额外的Python方法。

DataNitro的理念是尽可能使用常规的Pythonfunction,主要是因为Python有很多function。

例如,下面是对表格进行sorting的一种方法:

 from operator import itemgetter def table_sort(table_range, column): data = table_range.table sorted_data = sorted(data, key = itemgetter(column)) table_range.data = sorted_data 

例如, table_sort(CellRange("A1:E10"), 0)会按列AsortingA1:E10

在实践中,你会这样做在一行:

 def table_sort(table_range, column): table_range.table = sorted(table_range.table, key = itemgetter(column))