h2295 发表于 2024-11-3 16:03:32

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));获取指定单元格的值




yshf 发表于 2024-11-3 22:04:37

(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))

h2295 发表于 2024-11-4 09:01:42

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:06:22

本帖最后由 kozmosovia 于 2024-11-4 09:08 编辑

打开的是同一个XLS吗?如果工作表为空,代码是不工作的

h2295 发表于 2024-11-4 09:31:55

kozmosovia 发表于 2024-11-4 09:06
打开的是同一个XLS吗?如果工作表为空,代码是不工作的

是同一个工作表,在2022可以,2008提示(while (<= row count) 比较类型错误,然后调试发现count为空,类型为string

llsheng_73 发表于 2024-11-4 10:04:24

根据你的问题描述,感觉2022和2008是在不同的两台电脑上,问题的原因不是2008,而是电脑上的软件,多半2022上就只有MS-OFFICE,2008那台电脑上同时有MS-OFFICE和wps...

h2295 发表于 2024-11-5 21:39:51

llsheng_73 发表于 2024-11-4 10:04
根据你的问题描述,感觉2022和2008是在不同的两台电脑上,问题的原因不是2008,而是电脑上的软件,多半2022 ...

在同一台电脑,同时装有2008,2022,wps,office

kozmosovia 发表于 2024-11-6 09:05:57

在2008上用vlide设置断点调试一下吧。单纯代码本身看不出啥毛病

llsheng_73 发表于 2024-11-6 10:19:52

h2295 发表于 2024-11-5 21:39
在同一台电脑,同时装有2008,2022,wps,office

高版本没试过,但低版本上,WPS和OFFICE同时存在的情况下,(setq excel (vlax-get-or-create-object "Excel.application"))它一般启动WPS

kozmosovia 发表于 2024-11-6 10:24:07

WPS这么流氓的?直接穿别人的马甲,鸠占鹊巢。
页: [1] 2
查看完整版本: cad2008怎么读取xls数据