立即注册 登录
晓东CAD家园-论坛 返回首页

eachy的个人空间 http://bbs.xdcad.net/?14 [收藏] [复制] [分享] [RSS]

日志

一个简单的将 Excel 中每个 Sheet 特定的区域数据导出程序

已有 225 次阅读2013-5-4 09:59 | Excel, CAD

;;Author: eachy 2010.06.25
(defun c:tt (/ fl excel fn fp wks shts sht na uc nfl cells i j lst
      maxrows nfp)
  (if (setq fl (getfiled "Please Select Excel files" "" "xlsx;xls" 8)) ;_excel Filename
    (progn
      (if
 (not
   (setq excel (vlax-get-or-create-object "Excel.Application")) ;_ Excel ActiveX
 )
  (progn
    (princ "\nExcel not Install!")
    (exit)
  )
      )
      (setq fn (vl-filename-base fl) ;_ Excel FileName
     fp (vl-filename-directory fl) ;_ Excel File Directory
      )
      (setq wks  (vlax-get excel 'workbooks) ;_ Workbooks
     shts (vlax-invoke wks 'open fl) ;_ Open Excel file , also can use Excel Findfile property
      )
      (setq sht (vlax-get excel 'sheets)) ;_Get Sheets
      (vlax-for sh sht ;_ Foreach all sheet
 (setq na      (vlax-get sh 'name) ;_ Sheet Name
       uc      (vlax-get sh 'usedrange) ;_UsedRange
       maxRows (vlax-get (vlax-get uc 'Rows) 'Count) ;_Number of Bottom Row in Used
       cells   (vlax-get sh 'Cells) ;_ActiveSheet Cells
       i       7
 )
 (while (<= i maxrows) ;_Get Needed Rangs
   (setq lst (cons (list
       (vlax-get (variant-value
     (vlax-get-property cells 'item i 2)
          )
          'text
       )
       (vlax-get (variant-value
     (vlax-get-property cells 'item i 3)
          )
          'text
       )
       (vlax-get (variant-value
     (vlax-get-property cells 'item i 4)
          )
          'text
       )
     )
     lst
      )
  i   (1+ i)
   )

   (setq lst nil)
 )
 (setq lst
        (vl-remove
   nil
   (reverse
     (mapcar
       '(lambda (x)
   (setq
     x
      (mapcar '(lambda (a) (vl-string-trim " " a))
       x
      )
   )
   (if (vl-every '(lambda (x) (= x "")) x)
     nil
     (if (= (last x) "")
       (list (car x) (cadr x))
       x
     )
   )
        )
       lst
     )
   )
        )
 ) ;_Prosss Space
 ;;Follow to write hdm files
 (setq nfl (strcat fp "\\" fn "_" na ".hdm"))
 (setq nfp (open nfl "w"))
 (write-line "zgh" nfp)
 (write-line "BEGIN,坝中1.00:1" nfp)
 (foreach x lst
   (if (= 3 (length x))
     (write-line
       (strcat (car x) "," (cadr x) "(" (last x) ")")
       nfp
     )
     (write-line (strcat (car x) "," (cadr x)) nfp)
   )
 )
 (close nfp)
      )
      (vlax-invoke-method excel "quit") ;_closed excel
      (if (vlax-object-released-p excel)
 (vlax-release-object excel) ;_this can not close excel
      )
    )
  )
  (princ)
)

 


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

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

GMT+8, 2024-5-11 05:27 , Processed in 0.244953 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部