明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 172|回复: 2

[基础] Vlisp向word里面的表格写入数据

  [复制链接]
发表于 2024-7-8 23:27 | 显示全部楼层 |阅读模式
1 . 获取word进程对象
(setq Rtn (vlax-get-or-create-object "Word.Application"))
2 . 获取Documents对象
(setq doc (vlax-invoke-method
      (vlax-get-property Rtn 'Documents)
      'Open
      wjm
    ))
3 . 获取excel中所有的表格对象
(vlax-get-property doc 'Tables)
4 . 取第一个表格对象
(setq Table (vlax-invoke-method
      (vlax-get-property doc 'Tables)
      'item
      1
    ))
5 . 获取指定行和列的cell对象
(setq    cell (vlax-invoke-method
                       Table
                       'cell
                       (car row)
                       (cadr row)
                     )
              )
6 . 获取cell的range对象
(setq Rge (vlax-get-property cell 'Range))
7 . 给range赋值
(vlax-put-property
                Rge
                'Text
                value
              )
示例:
(defun $xiu-gai-bao-cun$
       (wjm data / doc rtn table)
  (setq Rtn (vlax-get-or-create-object "Word.Application"))
  (setq    doc (vlax-invoke-method
          (vlax-get-property Rtn 'Documents)
          'Open
          wjm
        )
  )
  (setq    Table (vlax-invoke-method
        (vlax-get-property doc 'Tables)
        'item
        1
          )
  )
  (mapcar (function (lambda (a / cell rge row value)
              (and
            (setq row (car a))
            (setq value (cdr a))
            (car row)
            (cadr row)
            (progn
              (setq    cell (vlax-invoke-method
                       Table
                       'cell
                       (car row)
                       (cadr row)
                     )
              )
              (setq Rge (vlax-get-property cell 'Range))
              (vlax-put-property
                Rge
                'Text
                value
              )
            )
              )
            )
      )
      data
  )
  (vlax-invoke-method doc "SaveAs2")
  (progn
    (vlax-invoke-method
      doc
      'Close
    )
    (vl-catch-all-apply 'vlax-invoke-method (list Rtn 'Quit))
    (gc)
  )
)
(setq wjm "D:\\测试文件.doc");要写入的文件路径
(setq data (list (cons (list 3 1) "张三")
         (cons (list 3 2) "李四")
         (cons (list 5 2) "王五")
         (cons (list 5 3) "赵六")
       )
)
($xiu-gai-bao-cun$ wjm data)

评分

参与人数 1明经币 +1 收起 理由
tryhi + 1 赞一个!

查看全部评分

发表于 2024-7-9 11:19 | 显示全部楼层
有没有替换所有指定文字并保留原有格式的
 楼主| 发表于 2024-7-9 22:48 | 显示全部楼层
tryhi 发表于 2024-7-9 11:19
有没有替换所有指定文字并保留原有格式的

Documents对象下有一个text是一个字符串 , 获取到之后替换完再复制回去应该是可以的
word表格里面的文字都是通过制表符(\t)实现换行和对其的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-13 04:08 , Processed in 0.129026 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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