如何正确操作excelapplication?

saint13 2005-08-22 11:57:47
在程序中执行了excelworkbook1.close之后就关闭了工作簿;
执行了excelapplication1.quit之后就退出了应用程序,
(任务管理器中“应用程序”中没有“Excel”)
但是在进程中还是看到“Excel.exe”,是否可以通过对excelapplication1的操作
来结束这个进程呢?
谢谢!
...全文
402 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hqhhh 2005-08-24
  • 打赏
  • 举报
回复
转贴,请参考:

方法如下 :


1 、创建一个普通 Application 。


2 、在 Form 中分别放入 ExcelApplication, ExcelWorkbook 和 ExcelWorksheet 。


3 、对 Excel 的一些操作 ,具体方法如下 :


【打开 Excel97 】

     ExcelApplication1.Connect;

     ExcelApplication1.Visible[0]:=True;



【增加一个 Workbook 】

     ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));



【添加一个 Worksheet 】

   var    Temp_Worksheet: _WorkSheet;

   begin

     Try

       Temp_Worksheet:=ExcelWorkbook1.

       WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;//( 注意 )

       ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);

     Except

       ShowMessage('Failure');

     End;

   end;



【关闭 Excel 】

     ExcelApplication1.Quit;

     ExcelWorksheet1.Disconnect;

     ExcelWorkbook1.Disconnect;

     ExcelApplication1.Disconnect;



【选择当前 Workbook 的某一 Worksheet 】

   procedure TForm1.ComboBox1DropDown(Sender: TObject);

   var

     i: Integer;

   begin

     ComboBox1.Clear;

     For i:=1 to ExcelWorkbook1.Worksheets.Count do

       ComboBox1.Items.Add((ExcelWorkbook1.Worksheets.Item[i] as _WorkSheet).Name);

   end;


   procedure TForm1.ComboBox1Change(Sender: TObject);

   begin

     ExcelWorkSheet1.ConnectTo(ExcelWorkbook1.Worksheets.Item [ComboBox1.ItemIndex+1] as _WorkSheet);

     ExcelWorkSheet1.Activate;

   end;


【选择某一 Workbook 】

   procedure TForm1.ComboBox2DropDown(Sender: TObject);

   var

     i: Integer;

   begin

     ComboBox2.Clear;

     if ExcelApplication1.Workbooks.Count >0 then

     For i:=1 to ExcelApplication1.Workbooks.Count do

     Combobox2.Items.Add(ExcelApplication1.Workbooks.Item[i].Name);

   end;


   procedure TForm1.ComboBox2Change(Sender: TObject);

   begin

     ExcelWorkSheet1.Disconnect;

     ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.Item[Combobox2.ItemIndex+1]);

     ExcelWorkBook1.Activate;

     ExcelWorksheet1.ConnectTo(ExcelWorkBook1.ActiveSheet as _WorkSheet);

     ExcelWorkSheet1.Activate;

   end;


【对某一单元格进行赋值及取值】

   procedure TForm1.Button5Click(Sender: TObject);

   begin

     ExcelWorksheet1.Cells.Item[SpinEdit2.Value,SpinEdit1.Value]:=Edit1.Text;

   end;


   procedure TForm1.Button6Click(Sender: TObject);

   begin

     Edit1.Text:=ExcelWorksheet1.Cells.Item[SpinEdit2.Value,SpinEdit1.Value];

   end;


【选择某一区域】

   ExcelWorkSheet1.Range['A1','C1'].Select;


【打开一个 Excel 文件】

   if OpenDialog1.Execute then

   Begin

       ExcelWorkBook1.ConnectTo(

          ExcelApplication1.Workbooks.Open(

             OpenDialog1.FileName,EmptyParam,EmptyParam,EmptyParam,

             EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,

             EmptyParam,EmptyParam,EmptyParam,EmptyParam,0));

       ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Activesheet as _Worksheet);

   End;



【存入一个 Excel 文件】

   procedure TForm1.button6Click(Sender: TObject);

   var

     i,row,column:integer;

   begin

     Try

       ExcelApplication1.Connect;

     Except

       MessageDlg('Excel may not be installed',mtError, [mbOk], 0);

       Abort;

     End;

     ExcelApplication1.Visible[0]:=True;

     ExcelApplication1.Caption:='Excel Application';

     ExcelApplication1.Workbooks.Add(Null,0);

     ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);

     ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);

     Table1.Open;

     row:=1;

     While Not(Table1.Eof) do

     begin

       column:=1;

       for i:=1 to Table1.FieldCount do

       begin

         ExcelWorksheet1.Cells.Item[row,column]: =Table1.fields[i-1].AsString;

         column:=column+1;

       end;

       Table1.Next;

       row:=row+1;

     end;

   End;


【打印预览一个 Excel 文件】

   procedure TForm1.Button7Click(Sender: TObject);

   begin

     ExcelWorksheet1.PrintPreview;

   end;


【打印一个 Excel 文件】

   procedure TForm1.Button8Click(Sender: TObject);

   begin

     ExcelWorksheet1.PrintOut;

   end;

saint13 2005-08-24
  • 打赏
  • 举报
回复
我的代码如下:请大家帮忙分析一下原因,谢谢!
begin
excelapplication1.Connect;
excelapplication1.Visible[0]:=true;
excelapplication1.Workbooks.Open('d:\safe\test.xls',
emptyParam,emptyParam,emptyParam,emptyParam,emptyParam,
emptyParam,emptyParam,emptyParam,emptyParam,emptyParam,
emptyParam,emptyParam,emptyParam,emptyParam,0);
excelworkbook1.ConnectTo(excelapplication1.Workbooks[1]);
excelworksheet1.ConnectTo(excelworkbook1.Worksheets[1] as _worksheet);
excelworksheet1.Activate;

excelworkbook1.Close;
excelapplication1.quit;
excelapplication1.Disconnect;
excelapplication1.Free;
end;
cncharles 2005-08-22
  • 打赏
  • 举报
回复
//如果照下面这样的调用不会的.
var
xlsApp:OleVariant;
I:Integer;
begin
mmo1.Lines.Clear;
xlsApp:=CreateOleObject('Excel.Application');
try
xlsApp.Workbooks.Open('F:\book1.xls');
for I:=1 to xlsApp.sheets.count do
mmo1.Lines.Add(xlsApp.Sheets[I].Name);
finally
xlsApp.quit;
xlsApp:=null;
end;
end;
cdsgajxlp 2005-08-22
  • 打赏
  • 举报
回复
ExcelApplication1.Disconnect;
无风飞尘 2005-08-22
  • 打赏
  • 举报
回复
那一定是你还有其它的ExcelApplication吧,不然不可能的。
要么就是……你开了一个Excel……,不过这个低级错误不太可能。
konhon 2005-08-22
  • 打赏
  • 举报
回复
貼代碼看看
saint13 2005-08-22
  • 打赏
  • 举报
回复
disconnect之后,进程中还有Excel.exe存在。
只有当关闭了所执行的程序之后,Excel才消失。
konhon 2005-08-22
  • 打赏
  • 举报
回复
ExcelApplication1.Disconnect;
无风飞尘 2005-08-22
  • 打赏
  • 举报
回复
ExcelApplication1.Disconnect;

断开连接进程就消失了。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧