delphi下打开一个excel,如何关闭

Description of your first forum.

delphi下打开一个excel,如何关闭

帖子paddy2007 » 星期一, 2009年9月28日 16:19


程序如下,我经常需要在delphi下操作excel,有时要show这个创建的excel,show之后需要用户选择保存与否。我的意思是有时候我只是借用excel这个工具导入导出数据,我并不想把它show出来,所以我就不用 ExcelApplication.visible:=True;这一行语句。结果虽然不show,但是在我最后下班关机的时候,会提示是否保存这个excel。显然这个ole对象是一直创建了的,只是不show。怎么才可以把创建的excel对象在使用完毕之后用程序关掉呢?
不知道说的清楚吗,小弟先谢过了!

这段程序,只用看一个头尾,中间就是一个导入的动作。

var
   i , j , k   : Integer;
   ColumnIndex : Integer;
begin
   
  Screen.Cursor:=crHourGlass;
  try
    try
       ExcelApplication:=createoleobject('excel.application');
       ExcelApplication.workbooks.add();
       ExcelWorksheet:=ExcelApplication.workbooks[1].worksheets[1];
    except
       ShowMessage('您的计算机没有安装Microsoft Excel.无法将数据导入Excel.');
       Exit;
    end;

    ColumnIndex:=2;
    ExcelWorksheet.cells[1,1]:='Id';
    //读字段名
    for   k:=0   to   cxGrid1DBTableView1.ColumnCount-1   do
    begin
      ExcelWorksheet.cells[1,ColumnIndex]:=cxGrid1DBTableView1.Columns[k].Caption;
      Inc(ColumnIndex);
    end;

   
   //读表格内容
   tbl1.First;
   for k:=0 to 3 do
     tbl1.Next;
   i:=2;
   for j:=2 to tbl1.RecordCount+1 do
     begin
     if (abs(tbl1.Fields.FieldByName('Kcl').AsFloat) > 0.0001)    or
        (abs(tbl1.Fields.FieldByName('Kcjz').AsFloat) > 0.0001)  then
          begin
             ExcelWorksheet.cells[i,1]:=i-1;
             ExcelWorksheet.cells[i,2]:=tbl1.Fields.FieldByName('Bh').AsString;
             ExcelWorksheet.cells[i,3]:=tbl1.Fields.FieldByName('Mc').AsString;
             ExcelWorksheet.cells[i,4]:=tbl1.Fields.FieldByName('Gg').AsString;
             ExcelWorksheet.cells[i,5]:=tbl1.Fields.FieldByName('Dw').AsString;
             ExcelWorksheet.cells[i,6]:=''''+tbl1.Fields.FieldByName('Kcl').AsString;

             if abs(tbl1.Fields.FieldByName('Kcjz').AsFloat) < 0.0001  then
               ExcelWorksheet.cells[i,7]:=''''+'0'
             else
               begin
                 if Length(tbl1.Fields.FieldByName('Kcjz').AsString)>4 then
                    ExcelWorksheet.cells[i,7]:=''''+formatfloat('0.00',tbl1.Fields.FieldByName('Kcjz').AsFloat)
                 else    
                    ExcelWorksheet.cells[i,7]:=''''+tbl1.Fields.FieldByName('Kcjz').AsString;
               end;

             Inc(i);
          end;
         tbl1.Next;
      end;    

    ExcelApplication.visible:=True;

  finally
    Screen.Cursor := crDefault;
  end;
   
end;
 
 
 

delphi下打开一个excel,如何关闭

帖子szhcracker » 星期一, 2009年9月28日 16:41


ExcelApplication.Quit;
  ExcelApplication := Unassigned;
 
 
 

delphi下打开一个excel,如何关闭

帖子jklee » 星期二, 2009年9月29日 10:59


ExcelApplication.ActiveWorkBook.Save ;
  ExcelApplication.WorkBooks.Close ;
  ExcelApplication.Quit ;
  ExcelApplication := Unassigned;
 
 
 

delphi下打开一个excel,如何关闭

帖子arundong » 星期三, 2009年9月30日 00:42


楼上正解
 
 
 

delphi下打开一个excel,如何关闭

帖子paddy2007 » 星期三, 2009年9月30日 09:05


多人接受答案了。