欢迎来到天天文库
浏览记录
ID:8809645
大小:58.00 KB
页数:17页
时间:2018-04-08
《visuallisp与excel电子表格》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、VisualLISP与Excel电子表格MicrosoftExcel在当今世界上的电子表格应用软件产品中占有绝对的统治地位。我们经常可以看到财会部门或人事部门利用它来处理日常的一些数据。虽然说Access在数据处理方面会比Excel好些,但它在一些简单的日常事务中象执行一些快速输入或排序时却不那么方便简单。它是一个常用的事务处理工具。这10年来,有许多AutoCAD程序是用于将提取数据并将其输出为报告。不论什么原因,它是很必要的。近10年来所见到的除了极少部分外(如TerryDotson的http://www.dotsoft.com/),输出的
2、机制均为输出为ASCII文本文件,或有些是带格式文件。这是因为10年来,我们没有VisualLISP或VBA使程序与其它应用软件相连通并在相互之间传递信息。现在可以了。如果你还一直在使用逗号或TAB分界符的文本来区分你的数据,你应该好好地看看这篇文章了。VisualLISP(VBA也可以)提供了必要的函数来接触和与任何提供了类型库(内部暴露API[应用程序接口程序]的应用程序相联系。通常它是VB或VBA。这一类应用程序包括MicrosoftOffice(Access,Excel,Word,还有象Outlook和PowerPoint),以及象Ma
3、thCAD,Visio、Actrix等产品。在你的代码中的第一件事就是必需在VisualLISP中加载ActiveX/COM。它是通过(vl-load-com)函数来完成的。第一件事尝试与Excel连接上就是搜索Excel的类型库文件。这里使用了Excel2000(9.0)作为例子。示例1演示了怎样通过Excel不同版本来取得与其类型库相关联。注意Excel2002用的是可执行文件来身来代替在以往版本中所使用的分离的TLB或OLB文件。Figure1:加载Excel97类型库(vl-load-com)(defunDSX-TypeLib-Exce
4、l(/sysdrvtlb)(setqsysdrv(getenv"systemdrive"))(cond((setqtlb(findfile(strcatsysdrv"\ProgramFiles\MicrosoftOffice\Office\Excel8.olb")))tlb)((setqtlb(findfile(strcatsysdrv"\ProgramFiles\MicrosoftOffice\Office\Excel9.olb")))tlb)((setqtlb(findfile(strcatsysdrv"\ProgramF
5、iles\MicrosoftOffice\Office\Excel10.olb")))tlb)((setqtlb(findfile(strcatsysdrv"\ProgramFiles\MicrosoftOffice\Office\Excel.exe")))tlb)((setqtlb(findfile(strcatsysdrv"\ProgramFiles\MicrosoftOffice\Office10\Excel.exe")))tlb)))下一步是加载类型库并定义内部接口的属性、方法和恒量。这些都可以使用任意名称的前缀,
6、该前缀只是用于对外部应用程序的快速及合理地调用。以下的文章内容将把类型库的前缀均置为斜体以方便区分。示例2演示了一个简单的函数来加载类型库并判断是否成功返回T或nil:Figure2:定义类型库接口(defunDSX-Load-TypeLib-Excel(/tlbfiletlbverout)(cond((nullmsxl-xl24HourClock)(if(setqtlbfile(DSX-TypeLib-Excel))(progn(setqtlbver(substr(vl-filename-basetlbfile)6))(cond((=tlbv
7、er"9")(princ"初始化MicrosoftExcel2000..."))((=tlbver"8")(princ"初始化MicrosoftExcel97..."))((=(vl-filename-basetlbfile)"Excel.exe")(princ"初始化MicrosoftExcelXP...")))(vlax-import-type-library:tlb-filenametlbfile:methods-prefix"msxl-":properties-prefix"msxl-":constants-prefix"m
8、sxl-")(ifmsxl-xl24HourClock(setqoutT)))))(T(setqoutT)))out)现在你已经在敲Excel的门并且
此文档下载收益归作者所有