找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 872|回复: 1

[研讨] XLS to List

[复制链接]
发表于 2014-3-1 09:44:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×

  1. ;;fl ---  Xls Filename
  2. ;;mod ---- t Only Read Sheet1
  3. ;;         nil Read All sheet
  4. (defun xls->list (fl mod / _readsheet excel wks shts sht sh tf)
  5.   (defun _readsheet (sh / uc mR mC cells r c lst l)
  6.     (setq uc        (vlax-get sh 'UsedRange)
  7.           mR        (vlax-get (vlax-get uc 'Rows) 'Count)
  8.           mC        (vlax-get (vlax-get uc 'Columns) 'Count)
  9.           cells        (vlax-get sh 'Cells) ;_ActiveSheet Cells
  10.           r        1 ;_Rows 计数
  11.           c        1 ;_列计数
  12.     )
  13.     (repeat mC ;_列数
  14.       (setq r 1)
  15.       (repeat mR ;_行数
  16.         (setq Lst (cons        (vlax-get (variant-value
  17.                                     (vlax-get-property
  18.                                       cells
  19.                                       'item
  20.                                       r
  21.                                       c
  22.                                     )
  23.                                   )
  24.                                   'text
  25.                         )
  26.                         lst
  27.                   )
  28.               r          (1+ r)
  29.         )
  30.       )
  31.       (setq l        (cons lst l)
  32.             lst        nil
  33.       )
  34.       (setq c (1+ c))
  35.     )
  36.     (reverse (mapcar 'reverse l)) ;_按列形成的表   
  37.   )
  38.   (if (and (setq excel (vlax-get-or-create-object "Excel.Application")) ;_ Excel ActiveX
  39.            (findfile fl)
  40.       )
  41.     (progn
  42.       (setq wks         (vlax-get excel 'workbooks) ;_ Workbooks
  43.             shts (vlax-invoke wks 'open fl) ;_ Open Excel file , also can use Excel Findfile property
  44.             sht         (vlax-get excel 'sheets)
  45.             tf (vlax-get  excel 'Visible)
  46.       )
  47.       (if mod
  48.         (setq l (_readsheet (vlax-get-property sht 'Item "Sheet1")))
  49.         (progn
  50.           (vlax-for sh sht
  51.             (setq l (cons (_readsheet sh) l))
  52.           )
  53.           (setq l (reverse l))
  54.         )
  55.       )
  56.       (if (zerop tf)
  57.         (progn
  58.           (vlax-invoke-method excel "Quit") ;_closed excel
  59.           (if (vlax-object-released-p excel)
  60.             (vlax-release-object excel) ;_this can not close excel
  61.           )
  62.         )
  63.         (vlax-invoke-method sht "Close");_?
  64.       )
  65.       l
  66.     )
  67.   )
  68. )

评分

参与人数 1D豆 +5 收起 理由
炫翔 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 4803个

财富等级: 富可敌国

发表于 2018-3-7 13:37:59 | 显示全部楼层
谢谢分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-23 16:44 , Processed in 0.355270 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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