| 
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册 
    
  ;;fl ---  Xls Filename
;;mod ---- t Only Read Sheet1
;;         nil Read All sheet
(defun xls->list (fl mod / _readsheet excel wks shts sht sh tf)
  (defun _readsheet (sh / uc mR mC cells r c lst l)
    (setq uc        (vlax-get sh 'UsedRange)
          mR        (vlax-get (vlax-get uc 'Rows) 'Count)
          mC        (vlax-get (vlax-get uc 'Columns) 'Count)
          cells        (vlax-get sh 'Cells) ;_ActiveSheet Cells
          r        1 ;_Rows 计数
          c        1 ;_列计数
    )
    (repeat mC ;_列数
      (setq r 1)
      (repeat mR ;_行数
        (setq Lst (cons        (vlax-get (variant-value
                                    (vlax-get-property
                                      cells
                                      'item
                                      r
                                      c
                                    )
                                  )
                                  'text
                        )
                        lst
                  )
              r          (1+ r)
        )
      )
      (setq l        (cons lst l)
            lst        nil
      )
      (setq c (1+ c))
    )
    (reverse (mapcar 'reverse l)) ;_按列形成的表    
  )
  (if (and (setq excel (vlax-get-or-create-object "Excel.Application")) ;_ Excel ActiveX
           (findfile fl)
      )
    (progn
      (setq wks         (vlax-get excel 'workbooks) ;_ Workbooks
            shts (vlax-invoke wks 'open fl) ;_ Open Excel file , also can use Excel Findfile property
            sht         (vlax-get excel 'sheets)
            tf (vlax-get  excel 'Visible)
      )
      (if mod
        (setq l (_readsheet (vlax-get-property sht 'Item "Sheet1")))
        (progn
          (vlax-for sh sht
            (setq l (cons (_readsheet sh) l))
          )
          (setq l (reverse l))
        )
      )
      (if (zerop tf)
        (progn
          (vlax-invoke-method excel "Quit") ;_closed excel
          (if (vlax-object-released-p excel)
            (vlax-release-object excel) ;_this can not close excel 
          )
        )
        (vlax-invoke-method sht "Close");_?
      )
      l
    )
  )
)
 |