admin 发表于 2024-2-28 17:46:01

将表数据输出到Excel (新建工作表)

<div>;;函数: (List采用Save采用Excel List)
;;功能: 将表数据输出到Excel (新建工作表)
;;参数: List 表,可以是一维或者二维表,或任意 list 表数据
;;返回: 0
;;示例: (List采用Save采用Excel '(1 2 3))
(defun List采用Save采用Excel( Lit / GetPy PutPy wbs wb sht xcells d c r)
(setq *appxls* (vlax-get-or-create-object "excel.application"))
(setq GetPy vlax-get-property PutPy vlax-put-property)
(setq wbs (GetPy *appxls* 'Workbooks))
;;判断工作薄(集合)是否为空,若空则新建工作簿,并返回工作薄指针
(setq wb (if (= 0 (GetPy wbs 'count))
    (vlax-invoke-method wbs 'add)
    (GetPy wbs 'item 1)) ;;如果不为空则返回第一个工作薄
)
;;新建工作表,用于导出数据。 (GetPy wb 'sheets) 是工作表集合对象
(setq sht (vlax-invoke-method (GetPy wb 'sheets) 'add))
;;得到工作表的 cells 对象,该对象与 range 对象的区别就是可以用行列定位
(setq xcells (GetPy sht 'cells) r 0 c 0)
(if (= (type Lit) 'LIST)
(repeat (length Lit)
    (setq d (nth r Lit) r (1+ r))
    (if (= (type d) 'LIST)
      (repeat (length d) (PutPy xcells 'item r (1+ c)(vl-princ-to-string(nth c d))) (setq c (1+ c)) )
    (PutPy xcells 'item 1 r (vl-princ-to-string d))
    )
    (setq c 0)
)(PutPy xcells 'item 1 1 (vl-princ-to-string Lit))
)
(vla-put-visible *appxls* 1);;显示工作表
;; 保存工作簿为文件
;(vla-saveas wb "C:/Test.xlsx")
(vlax-release-object xcells);;用完销毁
(vlax-release-object sht)
(vlax-release-object *appxls*)
)
页: [1]
查看完整版本: 将表数据输出到Excel (新建工作表)