又菜又急的问题!送80分。。。快来哦!

anzhihui_true 2002-04-10 01:45:00
小弟我做的一个程序是给用户抽数据到EXECL表中,当完成后点击关闭后我发现任务管理器中还是有Project1.exe在运行,这个时候我也打不开EXECL,出现这种情况可能是什么原因引起的呢? 如何解决呢????

{ button1(关闭)的代码中我只写了CLOSE; }
...全文
50 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
albert_wen 2002-04-12
  • 打赏
  • 举报
回复
这是什么问题呀?我把你程式测试了一下,完全正常呀,没什么问题。不知你用的操作系统和Delphi都是多少版本的?
sdqhlyf 2002-04-10
  • 打赏
  • 举报
回复
我也遇到了一个这种问题,正在解决,希望交流一下,我是在做报表时出现的这种错误,我这儿是能打开,不过光有excel的报表表头,就是工具栏什么的都有,就是没有客户区!
ZhuJunfeng 2002-04-10
  • 打赏
  • 举报
回复
MyWorkBook:=Unassigned;
LuZhou 2002-04-10
  • 打赏
  • 举报
回复
用action= caFree;
sdqhlyf 2002-04-10
  • 打赏
  • 举报
回复
是的,是不行的,我先也发了差不多内容的贴子,其实就是没有完全的彻底的关闭excel的问题!
sdqhlyf 2002-04-10
  • 打赏
  • 举报
回复
我的问题也还没解决呢,我也是同样的着急呀,我这都快用了,可还有这个问题呢,你在哪?交流一下吧
!我的号是:66891957
电话是:010-82927508,我姓吕
anzhihui_true 2002-04-10
  • 打赏
  • 举报
回复
我认为一定是某个东西没有关闭或释放,但是我用上面别人教给我的方法都不行,到底是什么没关闭呢???
anzhihui_true 2002-04-10
  • 打赏
  • 举报
回复
哎,还是不行,我不行了,先睡了,明天看有人帮我解决没。
anzhihui_true 2002-04-10
  • 打赏
  • 举报
回复
同志啊,一模一样的问题,你要是能解决一定要告诉我啊,我被这个问题搞破头了,MY QQ:44216607
My_first 2002-04-10
  • 打赏
  • 举报
回复
话题517256的标题是: 关于Excel的问题,急死我也! (100分)
分类:OLE/Automation Langrisser (2001-4-27 12:18:00)
请看:
procedure TProtocol.BitBtn5Click(Sender: TObject);
var
ExcelApp,MyWorkBook,MyWorkBook1:Variant;
filename: string;
begin
if query1.RecordCount=0 then
raise exception.Create('没有记录可供导出!');

try
ExcelApp:=CreateOleObject('Excel.Application');
except
on Exception do raise exception.Create('请确认您的机器是否已经安装EXCEL。')
end;

filename:='c:\AAA.xls'; //模板文件

ExcelApp.workBooks.Open(filename);
MyworkBook1:=ExcelApp.workBooks[1]; //MyworkBook1存放模板内容
MyWorkBook:=ExcelApp.Workbooks.Add; //MyWorkBook是新文件

...... //这段程序是将模板中的固定内容写入MyWorkBook中

MyworkBook1.Close;

MyWorkBook.WorkSheets[1].Cells[5,3].Value := Query1CNO.Value;
...... //这里是将Query1中当前记录部分字段的值写入MyWorkBook的WorkSheets[1]中


MyWorkBook.WorkSheets[2].Cells[6,2].Value := Query1NOTE.Value;
...... //这里是将Query1中当前记录其他字段的值写入MyWorkBook的WorkSheets[2]中


//保存文件(问题就出在这里)
filename:='d:\BBB.xls';
SaveDialog1.InitialDir:='d:\';
if SaveDialog1.Execute then //按‘确定’时执行这句
begin
filename:=SaveDialog1.FileName;
try
if FileExists(filename) then
DeleteFile(FileName);
MyWorkBook.saveas(filename);
MyWorkBook.close;
beep;beep;
showmessage('导出数据记录执行完毕!');
except
MyWorkBook.close;
end;
end
else MyWorkBook:=Unassigned; //按‘取消’时执行这句

ExcelApp.Quit; //如果在保存时按‘确定’则没问题;如果按‘取消’,则执行这句时弹出一条提示信息:‘文件"book1"已被修改,保存其修改内容吗?’并有'是'、'否'和'取消'三个按钮。
//这时如按'否'则没问题;若仍按'取消',那么在系统中的某一个Excel文件中就会多出一个名为'book1'的WorkBook,并处于未保存的状态。
ExcelApp:=Unassigned;
end;


我期望的情况是:在保存时按‘取消’,不弹出提示信息,而且在Excel中已经写了很多内容的MyWorkBook也自动关闭了,且没保存。


tinytao (2001-4-27 13:01:00)

MyWorkBook.Close(False, EmptyParam, EmptyParam);
ExcelApp.Quit; //在这句前加入


Langrisser (2001-4-27 13:31:00)
多谢tinytao,问题顺利解决了,不过MyWorkBook.Close(False, EmptyParam, EmptyParam);
要加在MyWorkBook:=Unassigned; 这句前才可以。
还有一个问题想请教各位:
我用上面这种方式将数据导出到Excel中虽然可以,但速度很慢。请问最快的方法是什么,
怎样实现?

hclee (2001-4-27 14:59:00)
当然是用现成的控件啦!
我有一个,不过导出的EXECL格式是旧的,凑合着可以用一用。





My_first 2002-04-10
  • 打赏
  • 举报
回复
xlsapp.free 加进去看看。
给你一段源程序,参考一下。稍等
anzhihui_true 2002-04-10
  • 打赏
  • 举报
回复
我把xlsapp.quit;放在xlsapp.visible:=true; 后面,还是不行啊,MY GOD 我要疯了,救命啊~~~~~~~!
My_first 2002-04-10
  • 打赏
  • 举报
回复
创建一个对必,用完后必须释放

xlsapp.Quit;
My_first 2002-04-10
  • 打赏
  • 举报
回复
你没有关闭excel;
anzhihui_true 2002-04-10
  • 打赏
  • 举报
回复
我已经把数据导入EXECL了,而且也保存好了,在我不关闭这个程序之前,EXECL我都可以打开,但不知道为什么我一关闭程序,就会把CPU占用100%,EXECL也不能打开。

我导入数据的代码如下,你看有什么问题吗?请指教。
procedure TForm1.Button3Click(Sender: TObject);
var
xlsapp,xlssheet:variant;
i,j:integer;
begin
try
if varisempty(xlsapp) then
xlsapp:=createoleobject('excel.application');
xlsapp.workbooks.add;
xlssheet:=xlsapp.worksheets['sheet1'];
except
application.MessageBox('不能打开EXCEL',pchar('警告'),mb_ok);
abort;
end;
for j:=0 to query1.FieldCount-1 do
begin
xlssheet.cells[1,j+1]:=query1.Fields[j].FieldName;
end;
with query1 do
begin
first;
for i:=0 to recordcount-1 do
begin
for j:=0 to fieldcount-1 do
begin
xlssheet.cells[i+3,j+1]:=fields[j].AsString;
end;
next;
end;
end;
xlsapp.visible:=true;
end;
My_first 2002-04-10
  • 打赏
  • 举报
回复
一定是你程序写有些问题, 你是想把数据导到execl中是吗?
anzhihui_true 2002-04-10
  • 打赏
  • 举报
回复
不行啊,还是原来那样。
My_first 2002-04-10
  • 打赏
  • 举报
回复
你用application.Terminate;来结束程序, 把这条语句放在关闭按钮里

5,939

社区成员

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

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