aardio 文档
aardio 范例: Excel - 带参数属性
参考
//Excel - 带参数属性
import console;
import com.excel;
console.showLoading(" 正在启动 Excel ");
var excel,err = com.excel();
assert(excel,err);
excel.alerts = false;
/*
excel.Visible = true;//显示 Excel 界面
excel.alerts = true;//允许界面提示与屏幕更新
*/
var book = excel.WorkBooks.Add();
var sheet = excel.ActiveWorkbook.Sheets(1);
var cell = sheet.Cells(1,1);
cell.Value2 = "haha"; //Value2是不带参数的属性
/*
cell.Value 是带参数的属性,
用 VB代码 可以这样赋值 cell.Value(xlRangeValueDefault) = "值"
很多 COM 控件的范例用的是 VB 代码,
aardio 用户看到可能很困惑,为什么可以对函数返回值赋值呢?
其实这是 VB 的一个语法糖,他内部会转换为类似这样的代码:
cell.setValue(xlRangeValueDefault,"值")
而上面的(xlRangeValueDefault)是可省略的可选参数,
所以 VB 也可以写为 cell.Value = "值"
这会让 aardio 用户误以为他是无参数的属性。
如果你在 aardio 中写 cell.Value = "值"
实际会转换为 cell.setValue("值2") 当然会报参数错误。
参考: https://docs.microsoft.com/en-us/office/vba/api/excel.range.value
*/
//aardio 写带参数的属性,需要加上 set 前缀:
cell.setValue(excel.xlRangeValueDefault,"值")
cell.setValue(,"值2") //aardio 写带参数的属性,并省略可选参数:
//aardio 读带参数的属性,需要加上 get 前缀。
console.log( cell.getValue(excel.xlRangeValueMSPersistXML) )
console.log( cell.getValue() ) //这个参数可省略
console.log( cell.Value ) //这样写 aardio 会转换为 cell.getValue()
/*
aardio 访问 COM 对象成员的规则是这样:
-------------------------------------------
comObject.Value 解析为读写COM对象属性。
comObject.getValue() 找到对象名称为 Value 的属性并将其作为读属性函数调用。
comObject.setValue() 找到对象名称为 Value 的属性并将其作为读属性函数调用。
comObject.Value() 找到对象名称为 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 前缀去访问。
很明显无参数的属性不需要加前缀。
带参数的属性,如果是只读的属性通常也不需要加前缀。
例如上面代码中的 var cell = sheet.Cells(1,1);
也可以写为 var cell = sheet.getCells(1,1);
但没必要这么写,因为这是一个只读的属性,对方不会混淆你的意图。
但如果你写 cell.Value()
Excel 就懵了,你觉得你是要读属性,但 Excel 误以为你是要把单元格的值清空。
*/
excel.Quit();
console.pause();
Markdown 格式