aardio 文档

aardio 范例: 多线程操作 Excel

com.excel 入门

import win.ui;
/*DSG{{*/
var winform = win.form(text="多线程操作 Excel";right=757;bottom=467)
winform.add(
edit={cls="edit";left=30;top=39;right=719;bottom=425;edge=1;multiline=1;z=1}
)
/*}}*/

winform.edit.text = "正在启动 Excel ……";
winform.show();

//com.excel 入门: https://www.aardio.com/zh-cn/doc/example/Excel/com.excel.html
import com.excel;
var excel,err = com.excel(); 
var book = excel.WorkBooks.Add(); 
var sheet = excel.ActiveWorkbook.Sheets(1);

import thread.command;
var listener = thread.command();

/*
Excel 不允许多线程并发操作,
可以让一个线程负责操作 Excel ,其他线程发送调用命令。
下面添加线程命令,首字符为 $ 表示异步回调。
*/
listener.$setExcelData = function(row,col,data){
    sheet.Cells(row,col).Value = data; 
    winform.edit.text = "已修改值:" +     sheet.Cells[row,col].Value; 
}

//创建工作线程
thread.invoke(function(listener){

    //Excel 接口本身依赖消息循环,必须用异步回调以避免阻塞接口。
    //调用界面线程命令,以 $ 字符开头的命令函数不等待执行结果。
    listener.$setExcelData(1,1,"你好");

},listener);

win.loopMessage();

Markdown 格式