明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 719|回复: 7

[提问] 获取EXCEL选中单元格的数据,现在的码只能获取连续的单元格

[复制链接]
发表于 2024-3-5 15:36:13 | 显示全部楼层 |阅读模式
  • 目前代码可以获取如下图片中的,选中不连续的获取不到下方的数据,请各路大神,代码怎么改写可以获取所选的所有数据
  • (defun e2c_list(flag / Selection UsedRange flag  e sht)
  •   (defun E-Get-Range-Value(range / a arr)
  •         (if(and range
  •                (setq arr (vlax-get-property range "value" nil ))
  •            )
  •                 (progn
  •                         (if (< 8000 (vlax-variant-type arr))
  •                                 (progn
  •                                         (setq a(vlax-safearray->list(vlax-variant-value arr)))
  •                                         (mapcar '(lambda(x)(mapcar 'vlax-variant-value x))a)
  •                                 )
  •                                 (progn
  •                                         (vlax-variant-value arr)
  •                                 )
  •                         )
  •                 )
  •         )
  • )
  • (setq e(vlax-get-object "Excel.Application"))
  • (setq sht(vlax-get-property e "ActiveSheet"))
  • (Setq Selection (vlax-get-property e (quote Selection) ))
  • (setq UsedRange(vlax-get-property sht "UsedRange"))
  • (cond ((= flag "0")(setq lst(E-Get-Range-Value UsedRange)));用过的单元格全部数据
  •       ((= flag "1")(setq lst(E-Get-Range-Value Selection))));选中的单元格全部数据(只能选连续的)
  • lst
  • )

本帖子中包含更多资源

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

x
发表于 2024-3-5 15:53:13 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2024-3-5 15:55 编辑

用户选定的单元格
(setq **Excel** (vlax-get-or-create-object "excel.application"))
(setq Selection (vlax-get-property *excel* 'Selection)
           Cells     (vlax-get-property Selection 'Cells)
     )

评分

参与人数 1明经币 +1 收起 理由
饼仲郎 + 1 同问,大佬有时间解答下嘛,获取的结果怎么.

查看全部评分

 楼主| 发表于 2024-3-5 15:57:58 | 显示全部楼层
自贡黄明儒 发表于 2024-3-5 15:53
用户选定的单元格
(setq **Excel** (vlax-get-or-create-object "excel.application"))
(setq Selection ...

用这个代码得到#<VLA-OBJECT Range 00000215b39ddc18>,这种怎么获取单元格的数据
 楼主| 发表于 2024-3-5 16:00:23 | 显示全部楼层
自贡黄明儒 发表于 2024-3-5 15:53
用户选定的单元格
(setq **Excel** (vlax-get-or-create-object "excel.application"))
(setq Selection ...

我用之前的方法还是只能得到前面的数据,后面的获取不到
发表于 2024-3-5 16:02:13 | 显示全部楼层
;;功能:载入工作表指定区域数据为 VisualLisp 数组
;;参数:ss 路径及文件名; n 工作表的下标或名称; usg 指定的数据区域
;;返回:VL数组
;;示例:(Get_Sheet_arry "d:\\cpp\\data.xlsx" 1 "a2:e2000")
;;VisualLisp 数组用法,查找第 2 行,第 3 列数据,转 lisp 表用 mapcar
;;(vlax-variant-value(vlax-safearray-get-element arr 2 3))

(defun Get_Sheet_arry(ss n usg / vg ws sht)
(setq excel (vlax-get-or-create-object "excel.application")
    vg vlax-get-property ws (vg excel 'Workbooks)
    sht(vg (vg (vlax-invoke ws 'Open ss) 'Worksheets) 'item n)
    arr (vlax-variant-value (vg (vg sht 'Range usg) 'Formula)))
(vlax-invoke ws 'close) arr
)

                        
原文链接:https://blog.csdn.net/yxp_xa/article/details/80910654
发表于 2024-3-5 16:13:57 | 显示全部楼层
上传有问题的excel文件,是不是所有文件都是这个问题?另存为或者复制到新的文件行不行?
 楼主| 发表于 2024-3-5 16:21:47 | 显示全部楼层
liuhe 发表于 2024-3-5 16:13
上传有问题的excel文件,是不是所有文件都是这个问题?另存为或者复制到新的文件行不行?

这个跟EXCEL没关系吧
发表于 2024-3-5 16:37:15 | 显示全部楼层
uualice2020 发表于 2024-3-5 16:21
这个跟EXCEL没关系吧

有的excel文件 有bug
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-25 05:32 , Processed in 0.182562 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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