Visual LISP与Excel电子表格 联系客服

发布时间 : 星期一 文章Visual LISP与Excel电子表格更新完毕开始阅读04fc8f323968011ca30091cb

(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);; 这样做有时还是不能完全杀除! )