| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3136 人关注过本帖
标题:VFP对EXCEL读操作,如何防止用户另外启动EXCEL而造成错误。
只看楼主 加入收藏
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
结帖率:99.55%
收藏
已结贴  问题点数:100 回复次数:46 
VFP对EXCEL读操作,如何防止用户另外启动EXCEL而造成错误。
今天周日,本版块很冷清,发个问题活跃一下气氛,请各位献计献策:
我在VFP中逐行对EXCEL文件进行读操作的过程中,倘若另外又打开其他的EXCEL文件,读操作就会返回一个不确定的值,造成读入的数据不正确,甚至会因为数据类型不一致而造成程序运行错误。请问各位有没有好办法来解决这个问题。难道只有先将EXCEL全部导入到DBF中再作进一步处理这条路可走吗?
搜索更多相关主题的帖子: 数据 EXCEL 今天 如何 用户 
2012-05-06 16:57
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2233
专家分:3913
注 册:2007-4-27
收藏
得分:15 
VFP好像无法控制用户手工打开EXCEL的操作

只求每天有一丁点儿的进步就可以了
2012-05-06 18:05
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:15 
在读操作前,检查是否有EXCEL打开,如果有,提示用户关闭EXCEL。或者用代码强制关闭EXCEL。这类代码网上有。
2012-05-06 18:51
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:684
专家分:1303
注 册:2009-3-1
收藏
得分:20 
在读操作前,检查是否有EXCEL打开,如果有,提示用户关闭EXCEL。这个容易实现,本论坛上就有。

有一次我的vfp在导入EXCEL数据,由于花时较长(5分钟以上),自己突然想到其他问题打开了EXCEL操作,完了关闭,结果导致VFP导入EXCEL失败,因为EXCEL被意外关闭。

电脑时代,有一句响亮的口号:没有做不到,只有想不到。

要实现楼主的想法, 我想从原理上说,应该是可以实现的,VFP在使用EXCEL前除了“在读操作前,检查是否有EXCEL打开,如果有,提示用户关闭EXCEL。”外,要做一步向windows提出一个申请,在我VFP使用EXCEL期间,请求windows禁止EXCEL被其他系统(用户)再打开。在VFP完成工作后,要注销这个申请。

这个申请和注销申请的代码我就不会了。我猜想,这个申请代码会因windows版本的不同,而不一样吧! 高手们可能是轻而易举的。

盼高手提供代码!谢谢!



2012-05-06 19:24
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
楼上的思路不错!

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-06 22:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
回复 楼主 hu9jj
这应该是你启动Excel用了同一个进程造成的

授人以渔,不授人以鱼。
2012-05-07 01:29
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
应该是这样的原因。
如果是在对EXCEL进行操作之前已经有打开的EXCEL文件,则VFP建立的EXCEL对象就不会与之前用户打开的EXCEL文件相互干扰,如果VFP打开的EXCEL文件已经被用户打开,则VFP打开的只能是只读,对读入数据没有影响。
如果用户之前没有打开过EXCEL文件,而是在VFP对EXCEL进行操作的过程中打开EXCEL文件,就会对读操作有影响了。那末该如何设置让用户在新的进程中打开EXCEL文件呢?或者按照4楼的思路也应该可以解决问题。

关于是否使用同一个进程很容易区别,退出一个EXCEL窗口时,同一进程中的其他EXCEL文件都会被关闭,不同进程的EXCEL文件则不受影响。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 06:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
VFP打开了的文件,别的用户可以用非只读方式打开它?

授人以渔,不授人以鱼。
2012-05-07 07:10
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
是VFP打开了已经打开的EXCEL文件时,通常不会提示错误,而是以只读的方式打开。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 07:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
打开之后检查一下文档的ReadOnly属性呗,在Excel中查一下这个属性叫什么名字,一定有的。其实,此时文档已经是只读的,也不会影响什么数据。

授人以渔,不授人以鱼。
2012-05-07 07:23
快速回复:VFP对EXCEL读操作,如何防止用户另外启动EXCEL而造成错误。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018365 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved