程序如下,我经常需要在
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;