现在有个问题,请大家帮帮忙!描述一下:
正在做一个程序,delphi读取很多excel,然后处理,这些操作都是放在线程里做的。
现在遇到这种情况,有些excel里面有数据源链接,链接到其他的excel表。在线程里面打开这样的excel以后,会弹出一个“是否更新”的对话框,不管你点击“是”或“否”,程序都会停止运行。试过用:MSExcel.DisplayAlerts := False; 关闭弹出的对话框,但无效,此框始终存在。也参见了网络上用ADO读取excel的方法,但对于合并单元格似乎读不出内容,很恼火。请知道怎么处理的兄弟指点一二,最终我就想实现不弹出对话框而读取数据,然后关闭excel。分不多,见谅哦~~~~~~
正在做一个程序,delphi读取很多excel,然后处理,这些操作都是放在线程里做的。
现在遇到这种情况,有些excel里面有数据源链接,链接到其他的excel表。在线程里面打开这样的excel以后,会弹出一个“是否更新”的对话框,不管你点击“是”或“否”,程序都会停止运行。试过用:MSExcel.DisplayAlerts := False; 关闭弹出的对话框,但无效,此框始终存在。也参见了网络上用ADO读取excel的方法,但对于合并单元格似乎读不出内容,很恼火。请知道怎么处理的兄弟指点一二,最终我就想实现不弹出对话框而读取数据,然后关闭excel。分不多,见谅哦~~~~~~
------------------------------------------------------
安装完整的EXCEL有用么?如果当前excel中有单元格引用了外部excel中的数据,那么“是否更新”的提示框会始终存在先把这些链接数据都转成实际数值
------------------------------------------------------
在打开excel的时候,提示“是否更新”的框框就已经出来了,根本没机会把那些数据变成实际数值
--------------------------------------------------------------
感谢回答!这个选项应该只针对当前excel本身,如果换一个包含数据链接的excel文件,现象依然存在。
我要读取的excel文件全在文件服务器上,不可能都用2007去打开并关闭那个选项吧。
end;
finally
ProgressBar1.Visible:=false;
showmessage( '当前文件导入完毕,请检查并存盘! ');
msExcel.Workbooks.close;
end;
msExcel.Disconnect;
msExcel.Quit;
msExcel:=Unassigned;
end;
.............
----------------------------------------------------------------
感谢你的回答!
在线程里读取excel后,都是free了的
现在的问题是,服务器上很多excel表,其中部分excel表里含有链接到其他excel表的数据项。用OLE读取或者用ExcelApplication控件组读取时,都会弹出“是否从数据源更新”的提示,点击“是”或“否”后线程都会停止运行。现在想的就是不弹出这个对话框,直接读取,哪怕内容为空,不至于程序死掉。
ExcelApplication1.Workbooks.Open有个参数较多的版本,其中有一个参数就是updateLinks,设置为xlUpdateLinksNever
当程序调用此法时,打开相关文件,则会应用所传入的参数设置。
xls.WorkBooks.open(fname,xlUpdateLinksNever,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,0);
提示说“xlUpdateLinksNever”未知标识符
已经 uses excel2000
xlUpdateLinksUserSetting = 1
xlUpdateLinksNever = 2
xlUpdateLinksAlways = 3