明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 445|回复: 10

[提问] cad2008怎么读取xls数据

[复制链接]
发表于 2024-11-3 16:03:32 | 显示全部楼层 |阅读模式

下列代码用于读取xls数据,在2022版本的cad中可以正常使用,但是在2008版本的cad报错,调试发现count(行数)获取不到,其类型为string且为空,请问怎么修改?
  1. (defun c:im (/ excelApp workbook sheet row count text x y)  
  2.   (vl-load-com)

  3.   ;; 选择并打开 Excel 文件  
  4.   (setq filePath (getfiled "选择 Excel 文件" "" "xls" 0))  
  5.   (setq excel (vlax-get-or-create-object "Excel.application"));获取EXCEL应用对象
  6.   (setq workbooks (vlax-get-property excel 'Workbooks));获取工作簿集合  
  7.   (setq workbook (vlax-invoke-method workbooks 'open filePath));打开指定工作簿
  8.   (setq worksheets (vlax-get-property workbook 'worksheets));获得工作簿中工作表的集合
  9.   (setq sheet (vlax-get-property worksheets 'item 1));获取第一个工作表

  10.   ;; 获取行数  
  11.   (setq count (vlax-get sheet 'UsedRange))  
  12.   (setq count (vlax-get count 'Rows))  
  13.   (setq count (vlax-get count 'Count))  
  14.   (setq cells (vlax-get-property sheet 'cells));获取工作表中单元格的集合
  15.   ;; 循环读取每一行  
  16.   (setq row 2)  
  17.   (while (<= row count)  
  18.     ;; 获取标注文字  
  19.    
  20.     (setq text1 (vlax-get (vlax-variant-value (vlax-get-property cells 'item row 1)) 'Value));获取指定单元格的值





发表于 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))  
 楼主| 发表于 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
发表于 2024-11-4 09:06:22 | 显示全部楼层
本帖最后由 kozmosovia 于 2024-11-4 09:08 编辑

打开的是同一个XLS吗?如果工作表为空,代码是不工作的
 楼主| 发表于 2024-11-4 09:31:55 | 显示全部楼层
kozmosovia 发表于 2024-11-4 09:06
打开的是同一个XLS吗?如果工作表为空,代码是不工作的

是同一个工作表,在2022可以,2008提示(while (<= row count) 比较类型错误,然后调试发现count为空,类型为string
发表于 2024-11-4 10:04:24 | 显示全部楼层
根据你的问题描述,感觉2022和2008是在不同的两台电脑上,问题的原因不是2008,而是电脑上的软件,多半2022上就只有MS-OFFICE,2008那台电脑上同时有MS-OFFICE和wps...
 楼主| 发表于 2024-11-5 21:39:51 | 显示全部楼层
llsheng_73 发表于 2024-11-4 10:04
根据你的问题描述,感觉2022和2008是在不同的两台电脑上,问题的原因不是2008,而是电脑上的软件,多半2022 ...

在同一台电脑,同时装有2008,2022,wps,office
发表于 2024-11-6 09:05:57 | 显示全部楼层
在2008上用vlide设置断点调试一下吧。单纯代码本身看不出啥毛病
发表于 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
发表于 2024-11-6 10:24:07 | 显示全部楼层
WPS这么流氓的?直接穿别人的马甲,鸠占鹊巢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 20:22 , Processed in 0.196157 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表