delphi对Excel进行排序后,后台无法退出excel.exe进程!

zhou_yang12 2014-09-27 01:14:32
如题
代码如下:
var
excelapp:Variant;
i,temp:integer;
key1: oleVariant ;
str:string;
begin
ExcelApp:=CreateOleObject( 'Excel.Application' );
ExcelApp.WorkBooks.Open('c:\1.xls');
ExcelApp.Visible:=true;
ExcelApp.DisplayAlerts:=false;
ExcelApp.worksheets[1].activate;
temp:=0;
for I := 1 to 200 do
begin
str:=ExcelApp.cells[i,1];
if str<>'' then
temp:=temp+1;
end;
ExcelApp.Range['a2:X14'].select;
ExcelApp.selection.Sort(Key1:=ExcelApp.range['h1']);
ExcelApp.ActiveWorkbook.Save;
ExcelApp.Quit;
end;





...全文
1287 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxfly 2017-06-05
  • 打赏
  • 举报
回复
把这名,拆分为两句试试 ExcelApp.selection.Sort(Key1:=ExcelApp.range['h1']); Key1:=ExcelApp.range['h1']); ExcelApp.selection.Sort(Key1);
jjpweb 2017-05-19
  • 打赏
  • 举报
回复
这个excelApp.quit关闭不了excel.exe,我之前也遇到过,没找到解决办法,不了了之。
linghengmao 2017-05-17
  • 打赏
  • 举报
回复
一般的操作,我一般是将EXCEL导入CLIENTDATASET的再进行操作
weixin_38499520 2017-04-25
  • 打赏
  • 举报
回复
visible设为FALSE
lyhoo163 2014-10-03
  • 打赏
  • 举报
回复
Range 参数: range 指定全表,或表的尾部 range[A1:C20] 指定区域 range[A1] 指定位置
zhou_yang12 2014-09-28
  • 打赏
  • 举报
回复
排序功能可以的!没问题!关键是range的参数问题!以前编程的时候如果用range[a1,b2]就会出现不能退出!而用range[a1:b2]就可以退出!!
lyhoo163 2014-09-28
  • 打赏
  • 举报
回复
引用 5 楼 zhou_yang12 的回复:
谢谢各位!我先试试!在调试过程中把ExcelApp.selection.Sort(Key1:=ExcelApp.range['h1']);这句屏蔽掉是可以退出的!!! 所以比较费解!!
说明排序下在执行中,一般情况下是排序未通过。
zhou_yang12 2014-09-27
  • 打赏
  • 举报
回复
谢谢各位!我先试试!在调试过程中把ExcelApp.selection.Sort(Key1:=ExcelApp.range['h1']);这句屏蔽掉是可以退出的!!! 所以比较费解!!
dyonggan 2014-09-27
  • 打赏
  • 举报
回复
1.ActiveWorkbook.Save 2.ActiveWorkbook.Close; 3.ExcelApp.Quit; 4.ExcelApp:=Unassigned;
虎子8 2014-09-27
  • 打赏
  • 举报
回复
excelapp:=Unassigned;试试呢
lyhoo163 2014-09-27
  • 打赏
  • 举报
回复
建议使用第三方控件,一快二便捷三占内存少。
lyhoo163 2014-09-27
  • 打赏
  • 举报
回复
直接操作EXCEL文件,造成文件需保存后,才能退出。保存时还要"确认", 最好是读取EXCEL数据,在内在中排序,再写入EEXCEL。 如果是生成新的EXCEL文件,不会出现你的问题。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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