cad2008怎么读取xls数据
下列代码用于读取xls数据,在2022版本的cad中可以正常使用,但是在2008版本的cad报错,调试发现count(行数)获取不到,其类型为string且为空,请问怎么修改?
(defun c:im (/ excelApp workbook sheet row count text x y)
(vl-load-com)
;; 选择并打开 Excel 文件
(setq filePath (getfiled "选择 Excel 文件" "" "xls" 0))
(setq excel (vlax-get-or-create-object "Excel.application"));获取EXCEL应用对象
(setq workbooks (vlax-get-property excel 'Workbooks));获取工作簿集合
(setq workbook (vlax-invoke-method workbooks 'open filePath));打开指定工作簿
(setq worksheets (vlax-get-property workbook 'worksheets));获得工作簿中工作表的集合
(setq sheet (vlax-get-property worksheets 'item 1));获取第一个工作表
;; 获取行数
(setq count (vlax-get sheet 'UsedRange))
(setq count (vlax-get count 'Rows))
(setq count (vlax-get count 'Count))
(setq cells (vlax-get-property sheet 'cells));获取工作表中单元格的集合
;; 循环读取每一行
(setq row 2)
(while (<= row count)
;; 获取标注文字
(setq text1 (vlax-get (vlax-variant-value (vlax-get-property cells 'item row 1)) 'Value));获取指定单元格的值
(setq count (vlax-get sheet 'UsedRange))
(setq count (vlax-getcount 'Rows))
(setq count (vlax-get count 'Count))
这三行改如下试试
(setq UsedRange (vlax-get sheet 'UsedRange))
(setq Rows (vlax-get UsedRange 'Rows))
(setq count (vlax-get Rows 'Count)) yshf 发表于 2024-11-3 22:04
(setq count (vlax-get sheet 'UsedRange))
(setq count (vlax-getcount 'Rows))
(setq count (vlax- ...
不行:
错误: 参数类型错误: stringp STR 本帖最后由 kozmosovia 于 2024-11-4 09:08 编辑
打开的是同一个XLS吗?如果工作表为空,代码是不工作的 kozmosovia 发表于 2024-11-4 09:06
打开的是同一个XLS吗?如果工作表为空,代码是不工作的
是同一个工作表,在2022可以,2008提示(while (<= row count) 比较类型错误,然后调试发现count为空,类型为string 根据你的问题描述,感觉2022和2008是在不同的两台电脑上,问题的原因不是2008,而是电脑上的软件,多半2022上就只有MS-OFFICE,2008那台电脑上同时有MS-OFFICE和wps... llsheng_73 发表于 2024-11-4 10:04
根据你的问题描述,感觉2022和2008是在不同的两台电脑上,问题的原因不是2008,而是电脑上的软件,多半2022 ...
在同一台电脑,同时装有2008,2022,wps,office 在2008上用vlide设置断点调试一下吧。单纯代码本身看不出啥毛病 h2295 发表于 2024-11-5 21:39
在同一台电脑,同时装有2008,2022,wps,office
高版本没试过,但低版本上,WPS和OFFICE同时存在的情况下,(setq excel (vlax-get-or-create-object "Excel.application"))它一般启动WPS WPS这么流氓的?直接穿别人的马甲,鸠占鹊巢。
页:
[1]
2