使用带有函数调用的TCOM / TCL设置单元格值

时间:2012-08-13 23:30:19

标签: excel tcl tdom

我正在尝试使用函数调用在TCOM中分配单元格值。但是我看到了打印的确切函数名称。

set application [::tcom::ref createobject "Excel.Application"]
set workbooks [$application Workbooks]
$application DisplayAlerts False
set workbook [$workbooks Open "\\$filename.csv"]
set worksheets [$workbook Worksheets]
set worksheet [$worksheets Item [expr 1]]
set cells_worksheet1 [$worksheet Cells] 

$cells_worksheet1 Item 27 B $Attribute

我想将$cells_worksheet1 Item 27 B $Attribute替换为$cells_worksheet1 Item 27 B {[getAttribute]} getAttribute函数返回$attribute。知道怎么做吗?

1 个答案:

答案 0 :(得分:3)

就我在Excel API中看到的那样,您从Cells属性返回Range,从Range成员返回Item。然后,您可以使用属性访问器访问该单个项目的属性。

# Assuming your largely-perfect code from your question...

set cell [$cells_worksheet1 Item 27 B]
set orientation [$cell Orientation]    ;# Arbitrary example of getting a property
$cell Orientation 42                   ;# Setting the property

您可以从文字以外的来源获取要操作的属性名称:

proc getAttribute {} {
    return "Orientation"
}
puts "orientation is [$cell [getAttribute]]" ;# Note, *no* {braces} involved!

但这并不一定适用于所有房产;问题不在于你不能要求它们,而是有些人想要在获取它们时传递额外的信息,而其他人则需要额外的工作来提取一次,因为它们本身就是复合对象。如果不确切知道你打算用它做些什么,就很难提出更好的建议。


大括号的问题是Tcl将它们视为准确的无替换文字。当你声明一个程序时,这很好,但是当你想调用那个程序并使用结果时,它就没用了。