孤独人 发表于 2018-5-30 21:41:06

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

lisp小白请大神指点,lisp如何获得excel中的指定的表格?例如有一张表格叫“工作量表三”,请问怎么用lisp来获得这个表?

Gu_xl 发表于 2018-5-30 21:41:07

(defun getsheet        (sheetname / xlsapp sheets sheet)
(if (not (VL-CATCH-ALL-ERROR-P
             (setq xlsapp (VL-CATCH-ALL-APPLY
                          'vlax-get-or-create-object
                          '("Excel.Application")
                          )
             )
           )
      )
    (if        (not (VL-CATCH-ALL-ERROR-P
             (setq sheets (VL-CATCH-ALL-APPLY
                              'vlax-get-property
                              (list xlsapp 'Sheets)
                          )
             )
             )
        )
      (if (not (VL-CATCH-ALL-ERROR-P
               (setq sheet (VL-CATCH-ALL-APPLY
                             'vlax-get-property
                             (list sheets 'item sheetname)
                             )
               )
             )
          )
        (progn
          (VL-CATCH-ALL-APPLY
          'vlax-invoke-method
          (list sheet 'Activate)
          ) ;_ 激活该表单
          sheet ;_ 返回值
        )
      )
    )
)
)

被承包的东子 发表于 2018-5-31 11:14:24

我也不会,但是我想通过论坛搜索,应该能找到答案

yxp 发表于 2018-5-31 20:40:09

不错 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:41

Gu_xl 发表于 2018-5-31 16:55


谢谢版主!

孤独人 发表于 2018-6-2 10:53:59

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

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

谢谢版主!

ba871021 发表于 2018-6-2 17:25:58

如何调用命令

水吉空 发表于 2018-6-7 10:32:36

Gu_xl 发表于 2018-5-30 21:41


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

yxp 发表于 2018-6-7 12:41:27

本帖最后由 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:09

yxp 发表于 2018-6-7 12:41
;;获取指定工作表的行数
(defun test()
(setq sheet (getsheet "sheet1"))


:victory:果然是大神,学习了。
页: [1] 2
查看完整版本: lisp小白请大神指点,lisp如何获得excel中的指定的表格