COM接口问题-com.Release(excel)-2025-8-6

zhhyit 8天前 180

以下这2条语句同时存在

excel.Quit(); //退出
com.Release(excel)

运行之后,为啥mainForm窗体弹出都不显示弹出,谁能解释下,var tt ={};不是已经拿到了内存空间,并且获得了赋值了么;

console.dumpTable(tt);控制台输出也是空的;

这2条语句存在其中一个,可以正常弹出mainForm窗体;

只有com.Release(excel),没有excel.Quit() 会导致任务管理器,一直有excel的进程一直驻留,并且不会因为mainForm窗体关闭,excel的进程结束;

只有excel.Quit(),没有com.Release(excel);会随着mainForm窗体关闭,让excel的进程结束;

表格数据如下

aardio程序如下

import win.ui;
import com.excel;
import godking.vlistEx;
import console;
/*DSG{{*/
var mainForm = win.form(text="表格测试";right=259;bottom=487)
mainForm.add(
vlist={cls="vlistEx";left=9;top=17;right=249;bottom=445;border=1;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/
console.open();
var excel,err = com.excel(); 
excel.alerts = false; //关闭界面提示与屏幕更新
var book = excel.Open( "\res\test.xlsx" );
var sheet = excel.ActiveWorkbook.Sheets(1);
var t ={"序号","姓名","性别 "};
var tt ={};
tt=sheet.Range("A2:C11").Value2;
mainForm.vlist.setTable(tt,t,80,1);

excel.Quit(); //退出
com.Release(excel)

console.dumpTable(tt);
console.pause(true);
mainForm.show();
win.loopMessage();

百思不得其解

最新回复 (3)
  • nlysh007 8天前
    0 2

    自己调试下看看就知道了


    excel.Quit(); 
    import debug; 
    debug.debug(); 
    com.Release(excel)


  • zhhyit 7天前
    0 3
    nlysh007 自己调试下看看就知道了excel.Quit();  import debug;  debug.debug();  com. ...

    import debug; 

    debug.debug();

    多谢大佬,又学会了一个单步调试方法,我之前都是用的console.pause(true);

    不研究COM了,不稳定,我也不知道咋搞


  • 光庆 7天前
    0 4
    excel.Quit(); //退出。这个时候函数内部已经对com对象进行了release操作了。 com.Release(excel) //所以这里没必要自行释放。而且,excel也不是个com对象,不适用于com.release函数。
返回