P
paddy2007
Unregistered / Unconfirmed
GUEST, unregistred user!
程序如下,我经常需要在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;