Tcl - 如何使用tcom对excel进行排序

时间:2016-01-08 06:13:43

标签: tcl

Excel排序需要以以下格式指定值:

Columns("A:C").Sort key1:=Range("C2"), order1:=xlAscending, header:=xlYes

如何通过tcom发送?我试过以下不成功的

 (Users) 14 % set sort [$worksheet Sort]
 ::tcom::handle0x0201DD00
 (Users) 15 % $sort Header xlYes
 0x80020005 {Type mismatch.}
 (Users) 16 % $sort Header 1
 (Users) 18 % set sfs [$sort SortFields]
 ::tcom::handle0x0201DD60
 (Users) 21 % $sfs Add Key:=[$worksheet Range "B2:B7"]
 0x80020005 {Type mismatch.}
 (Users) 22 % $sfs Add [$worksheet Range "B2:B7"]
 ::tcom::handle0x0201DDA0
 (Users) 24 % $sort Apply
 0x800a03ec {Unknown error}
 (Users) 25 % $sfs Add [$application Range "B2:B7"]
 ::tcom::handle0x0201DDC0
 (Users) 26 % $sort Apply
 0x800a03ec {Unknown error}

1 个答案:

答案 0 :(得分:2)

您需要替换Excel常量的整数值而不是其名称。

您可以在https://msdn.microsoft.com/en-us/library/office/ff838815.aspx仔细阅读常量和枚举列表并执行set xlYes [expr 1]以确保它是一个整数,然后在脚本中使用变量$ xlYes。

如果您的计算机上有Excel typelib文件,则可以tcom::import创建包含这些常量的tcl数组。

更多信息: 如何使用注册表找到tcom的com对象枚举:http://wiki.tcl.tk/19932 如何发现COM导出应用程序的API:http://wiki.tcl.tk/4472