(setq rng (DSX-Excel-Get-Cell (msxl-get-ActiveSheet xlapp) row col)) (msxl-put-colorindex (msxl-get-interior rng) intcol) )
;;;*************************************************************************
;;; 模块: DSX-Excel-Put-RowCellsColor ;;; 描述: 为一行单元格填入颜色
;;; 参数: startrow, startcol, num-cols, color (integer)
;;; 示例: (DSX-Excel-Put-RowCellsColor 1 1 5 14) 从行=1、列=1开始连接5列使用颜色#14
;;;*************************************************************************
(defun DSX-Excel-Put-RowCellsColor (startrow startcol cols intcol / next) (setq next startcol) (repeat cols
(DSX-Excel-Put-CellColor startrow next intcol) (setq next (1+ next)) ) )
;;;*************************************************************************
;;; 模块: DSX-Excel-Put-ColumnCellsColor ;;; 描述: 为一列单元格填入颜色
;;; 参数: startrow, startcol, num-rows, color (integer)
;;; 示例: (DSX-Excel-Put-ColumnCellsColor 1 1 5 14) 从行=1、列=1连接5行使用颜色 #14
;;;*************************************************************************
(defun DSX-Excel-Put-ColumnCellsColor (startrow startcol rows intcol / next) (setq next startrow) (repeat rows
(DSX-Excel-Put-CellColor next startcol intcol) (setq next (1+ next)) ) )
;;;*************************************************************************
;;; 模块: DSX-Excel-RangeAutoFit ;;; 描述: 为选中的范围的实行自动调整宽度 ;;; 参数: active-sheet (object)
;;; 示例: (DSX-Excel-RangeAutoFit myxlws)
;;;*************************************************************************
(defun DSX-Excel-RangeAutoFit (active-sheet) (vlax-invoke-method (vlax-get-property (vlax-get-property
(vlax-get-property active-sheet 'UsedRange) 'Cells )
'Columns ) 'AutoFit )
)
示例 9: 将它们合在一起
让我们将以上代码片段合在一起看看它们是怎样在AutoCAD中发挥作用的。该函数将提示你选择一个Excel.XLS文件打开并获取指定范围的行和列。它将通过列表形式返回数据,每一行为一个列表,而主列表是将每行列表合在一起。就象这样的表达式:( (行列表) (行列表) (行列表) . . .)
(defun C:GETXLREGION
( / xlapp xlfile ready tlbfile ash range xlist) (cond
( (DSX-Load-TypeLib-Excel) (cond ( (setq xlfile
(getfiled \电子表格文?quot; (if G$XFILE G$XFILE \))
(setq G$XFILE xlfile) (cond
( (setq xlapp (DSX-Open-Excel-Exist xlfile \(setq ash (msxl-Get-ActiveSheet xlapp)) (setq range (msxl-Get-ActiveCell xlapp))
;;; 从行2列1开始取68行6列的数据出来
(setq xlist (DSX-Excel-GetRangeValues-ByRows 2 1 68 6))
;;; 将每一子列表显示出来看看你拿到了什么样的数据... (foreach mbr xlist (princ mbr) (terpri)) (setq xlist nil)
(DSX-Excel-Quit xlapp)
(gc); 在关闭Excel后把所有的资源回收! )
( T (princ \开始应用程序进程失败.\) ) ) )
( T (alert \初始化Excel97类型库失败...\) (princ) )
--------------------------------------------------------------------------------
;;;*************************************************************************
;;; 模块: DSX-Excel-Quit ;;; 描述: 退出并关闭Excel进程 ;;; 参数: app (进程对象)
;;; 示例: (DSX-Excel-Quit xlapp)
;;;*************************************************************************
(defun DSX-Excel-Quit (appsession) (cond
( (not (vlax-object-released-p appsession)) (vlax-invoke-method appsession 'QUIT)
(vlax-release-object appsession) ) ) )
;;;*************************************************************************
;;; 模块: DSX-Excel-Kill
;;; 描述: 强迫任何打开的Excel进程关闭 ;;; 参数: none
;;; 示例: (DSX-Excel-Kill)
;;;*************************************************************************
(defun DSX-Excel-Kill ( / eo)
(while (setq eo (vlax-get-object \(DSX-Excel-Quit eo) (vlax-release-object eo) (setq eo nil)
(gc)(gc);; 这样做有时还是不能完全杀除! )
相关推荐: