var
SourceExcel,wsheet:variant;
SourceFileName:string;
begin... SourceExcel:=CreateOleObject('Excel.Application');
SourceExcel.WorkBooks.Open(SourceFileName);
SourceExcel.WorkSheets[1].Activate;
WSheet := SourceExcel.ActiveSheet;
SourceExcel.visible:=true;
...
SourceExcel.Workbooks.Close;
SourceExcel.Quit;
SourceExcel:=unassigned;
... 运行后,打开的excel窗口被关掉了,但是后台的excel.exe的进程仍在,但是当我关闭怎个delphi程序时,这些excel进程全部没了,郁闷啊,请教各位如何彻底关闭excel啊!
SourceExcel,wsheet:variant;
SourceFileName:string;
begin... SourceExcel:=CreateOleObject('Excel.Application');
SourceExcel.WorkBooks.Open(SourceFileName);
SourceExcel.WorkSheets[1].Activate;
WSheet := SourceExcel.ActiveSheet;
SourceExcel.visible:=true;
...
SourceExcel.Workbooks.Close;
SourceExcel.Quit;
SourceExcel:=unassigned;
... 运行后,打开的excel窗口被关掉了,但是后台的excel.exe的进程仍在,但是当我关闭怎个delphi程序时,这些excel进程全部没了,郁闷啊,请教各位如何彻底关闭excel啊!
解决方案 »
- 调用ORACLE8的存储过程进行图片的插入和读取的问题。。。。十万火急。。。。
- TcxGrid,谁用过?怎么实现斑马线的效果?
- 一个数据库修改问题
- ★★★我的一个断断续续开发了一年的软件,大家帮我提提意见!!★★★ up有分
- 急问:外部读入Sting类型的变量,想指定为动态生成的菜单项的onclick事件的名字,怎么办?
- 如何在treeview动态增加删除支点
- dataset能 不连接数据库中的数据表,然后对dataset进行操作吗?
- 如何判断ClientDataSet的Delta不是空的??(高分)
- delphi将excel导入access提示... adress at 00000000...错误,代码如下怎么解决啊
- 关于dbgrideh水平滚动条的问题
- 在fastreport中如何将分组放在最前面,列标题的前面
- 怎么把Common Control添加到工具栏呢?谢谢!
说明一下,这里SourceExcel被我设成了一个全局变量,不是像我上面写的那样是个临时变量
不知道是不是这个原因,我还没有测试过
SourceExcel.Workbooks.Close;
SourceExcel.Quit;
就可以完全退出了,不知道为什么全局变量就会残留一个excel进程
if not VarIsEmpty(Fexcel) then
Fexcel.application.quit;
Fexcel := unassigned;
我这边不行啊,用了你的方法,内存里还是驻留了excel.exe的进程
begin
//获得句柄
ExeHandle:=FindWindow('XLMAIN',nil);//'');//返回句柄
//关闭程序
if ExeHandle<>0 then
begin
SendMessage(ExeHandle,WM_Close,0,0);
ExeHandle:=FindWindow('XLMAIN',nil);//返回句柄
end;
end;
//ole容器初始化
ComObj.CoInitializeEx(nil,0);
V := CreateOleObject('Excel.Application');
V.Caption := '移动长话清单';
V.Application.SheetsInNewWorkbook := 2;
V.Application.DisplayAlerts := False;
V.Application.visible:=False;
V.DisplayFormulaBar:= True;
//do something
V.Application.ActiveWorkbook.SaveCopyAs('xxx.xls');
V.Application.ActiveWorkbook.close(SaveChanges:=False);
V.Quit;
SourceExcel.Workbooks.Close;
SourceExcel.Quit;
VarClear(wsheet);
VarClear(SourceExcel);
end;
就没有问题了。
ExcelApp.Quit;