马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
- ;;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
- )
- )
- )
|