原创
在Labwindows/CVI中调用Excel的几种方法
2010-1-26 21:23
9770
4
6
分类:
测试测量
最近需要实现在CVI中对Excel文件的读写,参考了几篇论文后,总结下基本上有3种方法:1.DDE(Dynamic Data Exchange);2.ADO(ActiveX Data Objects);3.Microsoft Excel xx.0 Object Library.
DDE真是不知道那个角落里的东西,从传说中的Windows 3.x开始就有,直到最新版的Excel还支持这种方法。资料少的可怜,MSDN上有两篇关于用DDE调用Excel的文章。根据我的测试,这方法首先是用无论哪种方式打开Excel主程序,然后再对Excel进行连接,连接后通过通用的DDE函数进行数据传递。我写的程序没有成功,主要在连接的时候经常连接失败,最后在打开Excel程序后加了很多延迟,问题好了很多,但有时候还是莫名其妙的连接失败。在Excel的写入和读取上,尽管我已经把程序写的和一篇论文很像,但总是出现同一个错误,折腾了几下就放弃这种方法了。鉴于DDE是接近淘汰的技术,其连接也不可靠,所以不建议使用这种方法。
Microsoft Excel xx.0 Object
Library貌似资料很多,但是鉴于CVI的用户数量,还是别指望太多,MSDN上有VB和C#的实例,如果我没记错的话.至于CVI中的库,真不知道是谁写的,哪都找不到帮助,MSDN上有完整的VB下的手册可以参考,如果装过完整版的Office的话好像会有个中文版的。用这东西真叫一个烦,大部分函数得看着VB下的手册猜着怎么用,步骤很繁琐。用它好处是,几乎可以实现Excel 的所有功能,操作顺序跟实际操作Excel有点像,缺点除了编程繁琐外,就是其版本严格的一一对应,Microsoft Excel 11.0 Object
Library对应的就是Excel 2003,版本高了、低了都不行,甚至有同版本不同Service Pack都不能兼容的情况。
ADO+微软的Jet,可以实现把Excel映射成数据库,用SQL语言来操作Excel。这种方法我没研究深入,只是实现了Excel数据的读取和写入,还有很多问题要解决,但是它的操作方式我很喜欢。像大多数库一样,ADO你可以找到除CVI外很多语言的资料、示例。用ADO实现的好处是不必过多考虑Excel版本问题,好像Excel2007之前的都可以兼容,Excel2007好像是提供了一个新的库,具体没研究过。坏处就是,你得参照VBA的语句来完成SQL完成不了的工作,因为对VBA不熟悉,所以我才没深入研究下去。另外一点是,Jet貌似没用64位的版本,所以这种方法不能提供64位系统的兼容。
用户1470618 2010-2-6 14:27
用户377539 2010-2-5 22:43