(Deepseek训练作品)excel生成cad中TABLE表的源代码
本帖最后由 biya 于 2025-3-13 08:18 编辑(defun c:tt (/ excel-app excel-file excel-workbook excel-sheet excel-range row-count col-count data row col pt table cell-value)
;; 提示用户选择Excel文件
(setq excel-file (getfiled "选择Excel文件" "" "xlsx;xls" 16))
(if (not excel-file)
(progn
(princ "\n未选择文件。")
(exit)
)
)
;; 启动Excel应用程序
(setq excel-app (vlax-get-or-create-object "Excel.Application"))
(vlax-put-property excel-app 'Visible :vlax-false);; 不显示Excel窗口
;; 打开Excel文件
(setq excel-workbook (vlax-invoke-method (vlax-get-property excel-app 'Workbooks) 'Open excel-file))
(setq excel-sheet (vlax-get-property (vlax-get-property excel-workbook 'Sheets) 'Item 1));; 选择第一个工作表
;; 获取Excel数据的范围
(setq excel-range (vlax-get-property excel-sheet 'UsedRange))
(setq row-count (vlax-get-property (vlax-get-property excel-range 'Rows) 'Count));; 获取行数
(setq col-count (vlax-get-property (vlax-get-property excel-range 'Columns) 'Count));; 获取列数
;; 读取Excel数据
(setq data (vlax-safearray->list (vlax-variant-value (vlax-get-property excel-range 'Value2))))
;; 关闭Excel文件并退出Excel应用程序
(vlax-invoke-method excel-workbook 'Close :vlax-false)
(vlax-invoke-method excel-app 'Quit)
(vlax-release-object excel-app)
;; 提示用户选择插入点
(setq pt (getpoint "\n选择表格插入点: "))
(if (not pt)
(progn
(princ "\n未选择插入点。")
(exit)
)
)
;; 创建表格
(setq table (vla-addtable
(vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
(vlax-3d-point (car pt) (cadr pt) 0.0);; 插入点(三维点)
(1+ row-count);; 行数(包括标题行)
col-count ;; 列数
10.0 ;; 行高
50.0 ;; 列宽
)
)
;; 填充表格数据
(setq row 0)
(foreach line data
(setq col 0)
(foreach cell line
;; 处理空值或非字符串数据
(setq cell-value
(cond
((null cell) "");; 空值
((= (type cell) 'VARIANT)
(vl-catch-all-apply 'vlax-variant-value (list cell)));; VARIANT类型
((= (type cell) 'REAL) (rtos cell 2 2));; 实数类型
((= (type cell) 'INT) (itoa cell));; 整数类型
(t (vl-princ-to-string cell));; 其他类型
)
)
;; 确保单元格值不为空
(if (and cell-value (/= cell-value ""))
(vla-settext table row col cell-value)
)
(setq col (1+ col))
)
(setq row (1+ row))
)
(princ "\nExcel表格已成功插入到AutoCAD中。")
(princ)
)
此源代码为DEEPSEEK多次调试+人为干预提示调试出的作品,暂时未合并单元格处理,未提取原表格背景色,抛砖引玉,大家可以超越,加油!!
使用 datalink 的excel 数据 ,直接创建出 table 对象。
目前存在的问题主要是:table的尺寸大小不好控制,数据格式也存在一定的差异导致需要调整,最大的问题实际上在于后续的excel修改后,table中的数据更新时非常卡顿,且在增减行列后出现期望之外的结果。
这个问题我已经反馈给开发团队了,希望后续能尽快修正与改进。 e2002 发表于 2025-3-13 19:59
使用 datalink 的excel 数据 ,直接创建出 table 对象。
目前存在的问题主要是:table的尺寸大小不好控制 ...
大佬,使用datalink 的时候,怎么获得 链接的选项?链接的选项对应着不同的工作表 (setq *xlApp* (vlax-get-or-create-object "excel.Application")) 读取excel
(setq *xlApp* (vlax-get-or-create-object "Ket.Application"))读取wps 历害,太历害啦 选择文档了没反应显示函数已取消 pizi158545086 发表于 2025-3-13 10:45
选择文档了没反应显示函数已取消
我是OFFICE,你的是WPS?,奇怪 之前用DEEPSEEK尝试写一个调整TABLE表行高列宽的插件,写出来的插件运行不成功,看不懂写的代码。 biya 发表于 2025-3-13 11:19
我是OFFICE,你的是WPS?,奇怪
我用的是WPS pizi158545086 发表于 2025-3-13 12:32
我用的是WPS
你用OFFICE试一下可能就好了,或你改一下代码支持WPS
,我最近有点忙,闲了来改一下 现在有AI真的是强大,学习学习 qincccken 发表于 2025-3-16 00:06
现在有AI真的是强大,学习学习
你这头像碉堡了
页:
[1]
2