|

楼主 |
发表于 2010-4-23 10:47:00
|
显示全部楼层
procedure TSBZGSCT.CSExcel;
var
I,lJ:Integer;
lExcel,lWorkBook,lOsheet,lSheetNum,lOWorksheet bject;
lOAD bject;
lApp,ldocs,ldoc,lSheets,lADoc:system.DispatchHelper;
lWorksheet{,lworksheet}:system.DispatchHelper;
lOpenDialog:TOpenDialog;
begin
lOpenDialog := TSaveDialog.Create(nil);
lOpenDialog.Filter := 'Microsoft Excel (*.xls|*.xls|All files (*.*)|*.*';
if not lOpenDialog.Execute then exit ;
if FileExists(lOpenDialog.FileName+'.xls') then
begin
if JsDialogs.ConfirmBox('该文件已经存在,是否要覆盖该文件?','询问',2)=false
then
exit;
end;
//创建Excel
lExcel:=comobj.CreateOleObject('Excel.application');
lapp :=system.DispatchHelper.Create(lexcel);
lWorkBook:=lApp.PropertyGet('WorkBooks',[]);
ldocs :=system.DispatchHelper.Create(lWorkBook) ;
ldocs.InvokeMethod('ADD',[]);
lOsheet:=lapp.PropertyGet('Sheets',[]);
lsheets :=system.DispatchHelper.Create(lOsheet);
lsheets.InvokeMethod('Add',[]); //这代码加上excel 进程就还在。注释后在任务管理器中有没有excel的进程了
//保存Excel
lOAD:=lApp.PropertyGet('ActiveWorkbook',[]);
lADoc:=System.DispatchHelper.Create(lOAD);
lADoc.InvokeMethod('saveas', [lOpenDialog.FileName+'.xls']);
lADoc.InvokeMethod('Close',[]) ;
ldocs.InvokeMethod('close',[]) ;
lApp.InvokeMethod('Quit', []);
( lOAD as System.IDisposable).Dispose ;
(lOsheet as System.IDisposable).Dispose;
(lWorkBook as System.IDisposable).Dispose;
(lExcel as System.IDisposable).Dispose;
end; |
|