明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 954|回复: 6

[提问] 求教一个获取EXCEL单元格的问题【已解决】

[复制链接]
发表于 2023-1-1 17:03:50 | 显示全部楼层 |阅读模式
本帖最后由 zhaoxt 于 2023-1-2 09:59 编辑

假设我LISP里已经获取了这活动的sheet,如何用代码得到如图里的(3  B3)这个值。查了好久资料找不到办法。望指点

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-1-1 18:31:31 | 显示全部楼层
试试这个,获取A1单元格的值:
(vlax-variant-value
        (vlax-get-property
                (vlax-get-property
                        (vlax-get-property
                                (vlax-get-property (vlax-get-object "Excel.Application") 'ActiveWorkbook)
                                'ActiveSheet
                        )
                        'range
                        "A1"
                )
                'value2
        )
)
 楼主| 发表于 2023-1-1 18:35:49 来自手机 | 显示全部楼层
ssyfeng 发表于 2023-1-1 18:31
试试这个,获取A1单元格的值:
(vlax-variant-value
        (vlax-get-property

感谢!可能是我没表达清楚,我的意思是如何判断已经填写的区域,好在紧接着的未填的单元格开始继续填写。
发表于 2023-1-1 19:32:40 | 显示全部楼层
zhaoxt 发表于 2023-1-1 18:35
感谢!可能是我没表达清楚,我的意思是如何判断已经填写的区域,好在紧接着的未填的单元格开始继续填写。

空值就是没有填写。(setq *xlapp*        (vlxls-app-open        fileid NIL        )
                   bookname        (vlxls-get-property *xlapp* "Application.ActiveWorkbook.Name"        )
                   sheetnamelst        (vlxls-sheet-get-all *xlapp*)
                   sheetname (car sheetnamelst)
                   rangid        (vlxls-range-getID(vlxls-sheet-get-usedrange *xlapp* sheetname))
             )

这是我写的,其中userdrange  就是使用区域。这个使用可能是空值,但是被设置了线宽也算是使用区域
 楼主| 发表于 2023-1-1 20:00:13 来自手机 | 显示全部楼层
liuhe 发表于 2023-1-1 19:32
空值就是没有填写。(setq *xlapp*        (vlxls-app-open        fileid NIL        )
                   bookname        (vlxls-get-property *x ...

十分感谢。但我还是没达到目的。你的这个代码确实能得到一个矩形区域。确切的说在我这个表格里可以得到"A1:B3"这个区域。但这只是我看到表格才知道这确切的值。问题是程序得到这个range,如何能从range里提取出行和列的具体数值呢?
发表于 2023-1-2 08:49:34 | 显示全部楼层
(setq e(vlax-get-object "excel.application"))
(setq s(vlax-get-property e "activesheet"))
(setq r1(vlax-get-property S "range" "b65536"))
(setq r2(vlax-get-property r1 "end" -4162))
(setq r3(vlax-get-property r2 "offset" 1 0))
(vlax-get-property r3 "address" nil nil nil)
 楼主| 发表于 2023-1-2 09:22:34 | 显示全部楼层
和尚777 发表于 2023-1-2 08:49
(setq e(vlax-get-object "excel.application"))
(setq s(vlax-get-property e "activesheet"))
(setq r1 ...

试了下,你这个可以!非常感谢!学到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 06:49 , Processed in 0.157303 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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