程序中打开excel文件的问题

ibicf 2004-10-08 03:16:24
我现在要实现下面的功能:点击按钮,打开一个对话框,用户选择excel文件,然后点击确定打开excel文件。
我用一个TExcelApplication,一个TOpenDialog实现上述功能。如果依次打开几个excel文件没有问题,但是如果已经打开了excel文件,如果先把excel关闭,然后再打开excel文件,excel文件就会显示不出来。好象是excel没有释放的问题,请各位给点高见。。。程序如下:
var
sStr, sDir: String;
sFileName: String;
begin
//取得当前程序执行的路径
sStr := GetCurrentDir;
sStr := Copy(sStr,0,Pos('\Bin',sStr)-1);
sDir := sStr+'\output\';
OpenDialog1.InitialDir := sDir;
if OpenDialog1.Execute then
begin
try
try
sFileName := OpenDialog1.FileName;
showmessage(sFileName);
ExcelApp.Workbooks.Open(sFileName,null,null,null,null,null,null,
null,null,null,null,null,null,0);
ExcelApp.Visible[1] := true;
except
end;
finally

end;
end;
end;
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
readersm68 2004-10-08
  • 打赏
  • 举报
回复
以上的方法应该是最好。相信我没错的。
readersm68 2004-10-08
  • 打赏
  • 举报
回复
顺便感谢aiirii(ari-爱的眼睛) 帮我恢复了信誉值。好人!
readersm68 2004-10-08
  • 打赏
  • 举报
回复
var
定义 XLApp:Variant;
创建 Try
XLApp:=CreateOleObject('Excel.Application'); //打开EXCEL
Except
self.WriteLog('Excel 没有安装,请先安装');
exit;
End;
释放 Finally
IF Not VarIsEmpty(XLApp) Then
Begin
XLApp.quit;
XLApp:=unassigned;
End;
End;
muleo 2004-10-08
  • 打赏
  • 举报
回复
内存中去查找,找到就Kill掉
var
HwndCalculator : HWnd;
begin
TempExcelFile := ExTractFileName(UserExcelFileName);
HwndCalculator := Winprocs.FindWindow(nil,Pchar('Microsoft Excel - ' + TempExcelFile));
if HwndCalculator <> 0 then
SendMessage(HwndCalculator,WM_CLOSE,0,0);
end;
ibicf 2004-10-08
  • 打赏
  • 举报
回复
楼上的能不能给段代码,谢了先
masterjames 2004-10-08
  • 打赏
  • 举报
回复
如果不操作数据,这样简单写
winexec('c:\1.xls',1);
aiirii 2004-10-08
  • 打赏
  • 举报
回复
你這種方法, 并沒有辦法在 Excel 關閉時釋放 ExcelApp,
所以, 要麼, 你用 ExcelApp.Connect 的方法, 聯接到前一個已經打開的 excel進程中,

要麼, 你直接用 winexec, 或者 shellExecute 直接打開 *.xls 文件就可

5,379

社区成员

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

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