|
这是写在资源集里的代码,执行后excel不退出啊,内存里有excel进程残留,怎么回事,帮忙看看,急等用啊。
static procedure TQZKZZYJ.GetExcelSheetsName(lExcelFileName : String; var lExcelSheetsName : String; var lCount : Integer);
var
i:integer;
oExcel,oWorkbooks,workbook,sbook : Object;
appExcel,workbooks,sourceworkbook, sourceworksheets, sourceworksheet: System.DispatchHelper;
begin
oExcel := ComObj.CreateOleObject('Excel.Application');
appExcel := System.DispatchHelper.Create(oExcel);
oWorkbooks := appExcel.PropertyGet('WorkBooks',[]);
try
workbooks := System.DispatchHelper.Create(oWorkbooks);
workbook := workbooks.InvokeMethod('Open',[lExcelFileName]);
sourceworkbook := System.DispatchHelper.Create(workbook);//打开文件
sbook := sourceworkbook.PropertyGet('Sheets',[]);
sourceworksheets := System.DispatchHelper.Create(sbook);
lCount:=ObjectHelper.ToInt(sourceworksheets.PropertyGet('Count',[]));
lExcelSheetsName:='';
for i:=1 to lCount do
begin
sourceworksheet := System.DispatchHelper.Create(sourceworksheets.PropertyGet('Item',));
lExcelSheetsName:=lExcelSheetsName+ObjectHelper.ToString(sourceworksheet.PropertyGet('Name',[]))
+ '`';
end;
finally
//关闭工作簿
workbooks.InvokeMethod('Close', []);
end;
appExcel.InvokeMethod('Quit',[]);
(sbook as System.IDisposable).Dispose;
(workbook as System.IDisposable).Dispose;
(oWorkbooks as System.IDisposable).Dispose;
(oExcel as System.IDisposable).Dispose;
end; |
|