AutoLISP例程:读取excel文件

更新时间:2024-04-19 03:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

AutoLISP例程:读取excel文件

好多讲述用vlisp读取excel文件的文章中都提到

vlax-import-type-library这个函数,其实没有必要。该函数仅仅是给每个excel对象模型中的属性、方法、对象等引入一个别名,占内存很大,没有意义。用vlisp操作excel文件只要了解excel对象模型和

vlax-get-or-create-object 、vlax-get-property、vlax-invoke-method、vlax-put-property、vlax-safearray-type几个函数就可以了。

下面的例子定义函数(GetCellValueAsList excelFile sheetName RangeStr) 读取如图所示的excel表格内容,返回list类型。

(defun c:test()

(setq retV (GetCellValueAsList

\ (princ) )

(defun GetCellValueAsList( excelFile sheetName RangeStr / xl wbs wb shs sh rg cs vvv nms nm ttt) (vl-load-com)

(setq xl (vlax-get-or-create-object \创建excel程序对象

(setq wbs (vlax-get-property xl \获取excel程序对象的工作簿集合对象

(setq wb (vlax-invoke-method wbs \用工作簿集合对象打开指定的excel文件

(setq shs (vlax-get-property wb \获取刚才打开工作簿的工作表集合

(setq sh (vlax-get-property shs \获取指定的工作表

(setq rg (vlax-get-property sh \用指定的字符串创建工作表范围对象

(setq vvv (vlax-get-property rg 'Value));获取范围对象的值 (setq ttt (vlax-safearray->list (vlax-variant-value vvv))) ;转换为list

(vlax-invoke-method wb \关闭工作簿 (vlax-invoke-method xl \推出excel对象 (vlax-release-object xl);释放excel对象 (setq ret ttt) )

下图用Visual LISP的变量监视器查看到底retV的值:

从上图看出返回值中,每行数据一个list,行list组成一个结果list。List中的原子类型是variant,用函数(vlax-variant-value var)读取每个原子的值到lisp变量中就可以使用了。

本文来源:https://www.bwwdw.com/article/okfp.html

Top