明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3868|回复: 13

[提问] lisp小白请大神指点,lisp如何获得excel中的指定的表格

[复制链接]
发表于 2018-5-30 21:41 | 显示全部楼层 |阅读模式
1明经币
lisp小白请大神指点,lisp如何获得excel中的指定的表格?例如有一张表格叫“工作量表三”,请问怎么用lisp来获得这个表?

最佳答案

发表于 2018-5-30 21:41 | 显示全部楼层
  1. (defun getsheet        (sheetname / xlsapp sheets sheet)
  2.   (if (not (VL-CATCH-ALL-ERROR-P
  3.              (setq xlsapp (VL-CATCH-ALL-APPLY
  4.                             'vlax-get-or-create-object
  5.                             '("Excel.Application")
  6.                           )
  7.              )
  8.            )
  9.       )
  10.     (if        (not (VL-CATCH-ALL-ERROR-P
  11.                (setq sheets (VL-CATCH-ALL-APPLY
  12.                               'vlax-get-property
  13.                               (list xlsapp 'Sheets)
  14.                             )
  15.                )
  16.              )
  17.         )
  18.       (if (not (VL-CATCH-ALL-ERROR-P
  19.                  (setq sheet (VL-CATCH-ALL-APPLY
  20.                                'vlax-get-property
  21.                                (list sheets 'item sheetname)
  22.                              )
  23.                  )
  24.                )
  25.           )
  26.         (progn
  27.           (VL-CATCH-ALL-APPLY
  28.             'vlax-invoke-method
  29.             (list sheet 'Activate)
  30.           ) ;_ 激活该表单
  31.           sheet ;_ 返回值
  32.         )
  33.       )
  34.     )
  35.   )
  36. )
回复

使用道具 举报

发表于 2018-5-31 11:14 | 显示全部楼层
我也不会,但是我想通过论坛搜索,应该能找到答案
回复

使用道具 举报

发表于 2018-5-31 20:40 | 显示全部楼层
不错 G 版函数直接返回工作表对象,我再画蛇添足一下:

;;调用 G 版函数获取 工作表 sheet 对象,如果当前打开的 excel 中包含了 sheet1
(setq sheet (getsheet "sheet1"))
;;获取工作表 cell 对象
(setq cell (vlax-get-property sheet 'cells))
;;获取 C4单元格 对象
(setq RangC4 (vlax-get-property cell 'Range "C4"))
;;获取 C4单元格对象的 value 属性
(setq value (vlax-get-property RangC4 'value))
;;转换变体数据为字符串
(vlax-variant-value value)
回复

使用道具 举报

 楼主| 发表于 2018-6-2 10:53 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2018-6-2 10:53 | 显示全部楼层
yxp 发表于 2018-5-31 20:40
不错 G 版函数直接返回工作表对象,我再画蛇添足一下:

;;调用 G 版函数获取 工作表 sheet 对象,如果当 ...

谢谢版主!
回复

使用道具 举报

发表于 2018-6-2 17:25 | 显示全部楼层
如何调用命令
回复

使用道具 举报

发表于 2018-6-7 10:32 | 显示全部楼层

版主,请问下如何实现读取指定表格的行列数?
回复

使用道具 举报

发表于 2018-6-7 12:41 | 显示全部楼层
本帖最后由 yxp 于 2018-6-7 12:48 编辑

;;获取指定工作表的行数
(defun test()
(setq sheet (getsheet "sheet1"))
;;下面将依次获取工作表 sheet 对象的 UsedRange.Rows.Count 属性
(setq usr (vlax-get-property sheet 'UsedRange))
(setq row (vlax-get-property usr 'Rows))
(setq n (vlax-get-property row 'Count))
)
;;获取最后列数用UsedRange.columns.count
回复

使用道具 举报

 楼主| 发表于 2018-6-8 15:05 | 显示全部楼层
yxp 发表于 2018-6-7 12:41
;;获取指定工作表的行数
(defun test()
(setq sheet (getsheet "sheet1"))

果然是大神,学习了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 15:37 , Processed in 0.383703 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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