//COM 接口 - 带参数属性 import console; import com.excel; console.showLoading(" 正在启动 Excel "); var excel,err = com.excel(); assert(excel,err); excel.alerts = false; var book = excel.WorkBooks.Add(); var sheet = excel.ActiveWorkbook.Sheets(1); var cell = sheet.Cells(1,1); cell.Value2 = "haha"; //Value2是不带参数的属性 /* cell.Value 是带参数的属性, 加上 set 前缀可以指定所有属性参数。 */ cell.setValue(excel.xlRangeValueDefault,"值") cell.setValue(,"值2") //省略可选参数 cell.setValue("值2") //写属性值时,可直接略写其他可选参数。 cell.value = "值2" //这样写也可以 //aardio 读带参数的属性,需要加上 get 前缀。 console.log( cell.getValue(excel.xlRangeValueMSPersistXML) ) console.log( cell.getValue() ) //这个参数可省略 console.log( cell.Value() ) //这样写也可以 /* aardio 访问 COM 对象成员的规则是这样: ------------------------------------------- comObject.value 解析为读写 COM 对象属性。 comObject.Value() 这样写一定会返回函数对象,然后调用该函数。 comObject.getValue() 找到对象名称为 Value 的属性并将其作为读属性函数调用。 comObject.setValue() 找到对象名称为 Value 的属性并将其作为写属性函数调用。 comObject.Value = v 会转换为 comObject.setValue(v) var v = comObject.Value 会转换为 var v = comObject.getValue() 访问 COM 对象的成员最终都会转换为函数调用。 如果在 aardio 代码中写 comObject.value() 那么 comObject.value 一定是函数。 但省略调用操作符() 写为comObject.value 就是访问 COM 对象属性了。 有些接口会区分这两种写法,有的不会区分。 并不是所有 COM 对象属性都要带上 set,get 前缀去访问。 大多时候都不需要加前缀,无参数的属性基本都不需要加前缀。 带参数属性但参数是可选的,这也不需要加 set,get 前缀。 只读的属性通常也不需要加前缀。 例如上面代码中的 var cell = sheet.Cells(1,1); 因为这是一个只读的属性,对方不会混淆你的意图。 */ excel.Quit(); console.pause();