关于导出excel表的问题

xqmarine 2006-05-06 03:07:16
我在程序中打开一个excel表,然后往里面输入内容。最后存盘。然后我到文件所在目录打开那个文件

第一次能打开,多弄几次就会打不开。 后来我在进程管理器看到有几个进程 EXCEL.exe 。我关闭这些进程后,就能打开那个存盘的文件。 我想关于excel操作代码肯定有问题。 请帮忙看下?

代码:
try
ExcelApp := CreateOleObject('Excel.Application');
except
Application.MessageBox('你的机器里未安装Microsoft Excel.', '', 32);
Exit;
end;
WorkBook := ExcelApp.WorkBooks.add;

/////省略往sheet里写数据的代码。。。

ExcelApp.activesheet.saveAs(filename); //存盘 filename是文件路径名

ExcelApp.WorkBooks.Close;
ExcelApp.Quit;

这段代码哪里没有关闭打开的excel进程呀? 还是应该怎么写?
...全文
251 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hszj 2006-05-10
  • 打赏
  • 举报
回复
去下在Jungle的EjunExcelRW类库吧,不需要Excel直接读写xls文件。 http://www.e-jun.com/bbs
Elmer728 2006-05-09
  • 打赏
  • 举报
回复
我碰到过这个问题。就是这样解决的:
WorkBook:=unassigned;
ExcelApp:=unassigned;
Elmer728 2006-05-09
  • 打赏
  • 举报
回复
这样试试:
ExcelApp:=unassigned;
xqmarine 2006-05-08
  • 打赏
  • 举报
回复
up 谁帮忙解决呀?
over_the_hill 2006-05-07
  • 打赏
  • 举报
回复
是建sheet的问题 以前也遇到过
xqmarine 2006-05-07
  • 打赏
  • 举报
回复
disconnect 不行呀, 提示自动对象没这个方法 的错误!

我不是用delphi的excel控件。用 oleobject也有这个方法吗?

楼上的遇到过,麻烦说下怎样解决的啊?
wudi_1982 2006-05-06
  • 打赏
  • 举报
回复
procedure TForm1.Button10Click(Sender: TObject);
var
Temp_Worksheet: _WorkSheet;
i,j,m ,sa,xa,sj,xj: integer;
begin
ExcelApplication1.Connect;
ExcelApplication1.Visible[0] := false;
if CheckBox1.Checked then
ExcelApplication1.Caption := '百分比数据'
else
ExcelApplication1.Caption := '索力数据数据';


ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
Temp_Worksheet:=ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
ExcelWorksheet1.Name := 'moumou';
//数据录入代码

ExcelWorksheet1.SaveAs(ed_name.Text);



ExcelWorkbook1.Close;
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
showmessage('数据导出完毕');


这是精简之后的
wudi_1982 2006-05-06
  • 打赏
  • 举报
回复
procedure TForm1.Button10Click(Sender: TObject);
var
Temp_Worksheet: _WorkSheet;
i,j,m ,sa,xa,sj,xj: integer;
begin
ExcelApplication1.Connect;
ExcelApplication1.Visible[0] := false;
if CheckBox1.Checked then
ExcelApplication1.Caption := '百分比数据'
else
ExcelApplication1.Caption := '索力数据数据';


ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
Temp_Worksheet:=ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
ExcelWorksheet1.Name := 'moumou';

ExcelApplication1.Columns.ColumnWidth := 12;

ExcelApplication1.Cells.Item[1,1] := '索号';
ExcelApplication1.Cells.Item[1,2] := '下游江';
ExcelApplication1.Cells.Item[1,3] := '上游江';
ExcelApplication1.Cells.Item[1,4] := '索号';
ExcelApplication1.Cells.Item[1,5] := '上游岸';
ExcelApplication1.Cells.Item[1,6] := '下游岸';
if not CheckBox1.Checked then
ExcelApplication1.Cells.Item[1,8] := '空传感器';
j := 1;
i := 2;
sa := 2;
xa := 2;
sj :=2;
xj := 2;

ADOQuery3.Close;
ADOQuery3.Open;

while not ADOQuery3.Eof do
begin
if ADOQuery3.FieldByName('qy').Value='下游江' then
begin

ExcelApplication1.Cells.Item[xj,2].value := ADOQuery3.FieldByName('sl').Value;
inc(xj);
end
else if ADOQuery3.FieldByName('qy').Value='上游江' then
begin
ExcelApplication1.Cells.Item[sj,3].value := ADOQuery3.FieldByName('sl').Value;
inc(sj);
end
else if ADOQuery3.FieldByName('qy').Value='上游岸' then
begin
ExcelApplication1.Cells.Item[sa,5].value := ADOQuery3.FieldByName('sl').Value;
inc(sa);
end
else if ADOQuery3.FieldByName('qy').Value='下游岸' then
begin
ExcelApplication1.Cells.Item[xa,6].value := ADOQuery3.FieldByName('sl').Value;
inc(xa);
end
else begin
if not CheckBox1.Checked then
begin
ExcelApplication1.Cells.Item[i,8].value := ADOQuery3.FieldByName('sl').Value;
inc(i);
end;
end;
ADOQuery3.Next;

end;

for i:=2 to 42 do
begin
ExcelApplication1.Cells.Item[i,1] := inttostr(i-2);
ExcelApplication1.Cells.Item[i,4] := inttostr(i-2);
end;

ExcelWorksheet1.SaveAs(ed_name.Text);



ExcelWorkbook1.Close;
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
showmessage('数据导出完毕');

end;
hsmserver 2006-05-06
  • 打赏
  • 举报
回复
ExcelApp.Disconnect;试试

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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