Lee Mac 发表于 2022-7-6 10:48:09

 
我还认为您的问题涉及ACAD_表实体,如果它只是行和文本的集合,那么问题的难度会有所增加。。。

fixo 发表于 2022-7-6 10:54:03

从我的代码库中试试这个
;;导入没有复杂标题行的普通表;;;;放入新创建的Excel文件;;;;作者:Fatty T.O.H.(c)2007*版权所有;;;;2008年8月20日编辑;;编辑于2010年8月26日(vl load com)(defun rem dups(mylist/newlst);;删除重复项;;由hutch发布(foreach item mylist(and(null(member item newlst))(setq newlst(cons item newlst)))newlst)(defun get contents(/data en i ip output p1 p2 rowlist ss tmp txt ylist)(setq data nil);仅调试(alert“Select table by window selection\n\t Without title”)(setq p1(getpoint“\n指定第一个角点:>>”)p2(getcorner p1“\n指定相反的角点:>>”)(setq ss(ssget“W”(list(car p1)(cadr p1))(list(car p2)(cadr p2))(list(cons 0“TEXT”))i-1)(repeat(sslength ss)(setq en(ssname ss(setq i(1+i)))ip(cdr(assoc 10(entget en)))txt(cdr(assoc 1(entget en)))tmp(cons txt ip)数据(cons tmp data))(setq ylist(mapcar’caddr data)ylist(rem dups ylist)ylist(vl sort ylist(function)(lambda b)(>a b)))(repeat(length ylist)(setq rowlist(vl remove if not)(function(lambda(x)(equal(caddr x)(car ylist)0.1)))数据)行列表(vl sort rowlist(function(function)(lambda(a b)(<(cadr a)(cadr b)))(setq输出(append output(list rowlist)))(setq ylist(cdr ylist)))(setq输出(mapcar(函数(λ(x)(mapcar’car x)))输出))(反向(rem dups输出));**主要部分***;;(defun C:ETT(/adoc aexc awb axss cll colm csht rowdata excel\u list nwb osm rang row sht)(vl load com)(setq excel\u list(get contents))(setq fname(getstring T“\n输入不带XLS扩展名的excel文件名:”)(setq aexc(vlax get or create object“excel.Application”)awb(vlax get property aexc“Workbooks”)nwb(vlax invoke method awb“Add”)sht(vlax get property nwb“Sheets”)csht(vlax get property sht“Item”1)cll(vlax get property csht“Cells”)(vlax put property csht“Name”Table)(vla put visible aexc:vlax false)(setq n 1num(length(car excel\u list))(repeat num(setq row 1 colm n)(setq rowdata(mapcar'car excel\u list))(repeat(length rowdata)(vlax put propertycll“Item”)rowcolm(vl princ to string(car rowdata))(setq row(1+row))(setq rowdata(cdr rowdata))(setq excel\u列表(mapcar的cdr excel\u列表))(setq row(1+row)n(1+n))(setq rang(vlax get property csht“UsedRange”);;左水平对齐(缩进):(vlax put属性范围“Horizontalalignment”(vlax make variant-4131 3));;垂直对齐中心:(vlax put属性范围“垂直对齐”(vlax make variant-4108 3));;设置文本格式:(vlax put property rang“NumberFormat”(vlax make variant“@);

Guest balajibth 发表于 2022-7-6 10:56:28

海,我已经尝试了这个lisp与这个附加的图纸。。。但一些错误正在到来。。你能看到吗????我正在使用cad 2007版本。。。这是用于将Dwg表格导出为Excel格式????
 
 
此处*未找到Excel应用程序*;错误:没有函数定义:
XLP-GET-RANGE此错误即将出现。。。。请你澄清一下。。。。。。
 
 
提前感谢。。。

ReMark 发表于 2022-7-6 10:57:57

在代码的标题中提到导入到新创建的Excel电子表格中。这是否意味着电子表格必须以某种形式存在,即使它是空的?

Guest balajibth 发表于 2022-7-6 11:02:19

Hai hw使用此lisp??????这是从excel导入的????请澄清如何使用此lisp。。。输入和输出是什么。。。。。
 
 

Guest balajibth 发表于 2022-7-6 11:06:09

您能给出表格从excels导入到dwg的代码吗?或者-----表格从cad导出到excel。。因为我们使用表格了解细节。。。。。你能帮助我吗。。。。。。我正在使用cad 2007。。。。。。。我期待Lisp程序。。。。

ReMark 发表于 2022-7-6 11:07:02

我看到你正在使用Mech 2007。我刚刚用plain vanilla 2007做了一个测试,在AutoCAD中使用table命令创建了一个表,由5列14行组成。我填充了每个列标题,并在每个单元格中输入整数。我使用TABLEEXPORT命令以逗号分隔(CSV)文件格式导出数据。我双击了。我创建了一个CSV文件,打开了Microsoft Excel(2003),表格有我的主标题(标题)、五列以及我在每个单元格中放置的所有值。因此,正如您看到的那样,如果您的图形中有一个真正的AutoCAD表格,则可以导出数据并在Excel中轻松使用。这一切都是在不使用任何lisp代码的情况下完成的。

ReMark 发表于 2022-7-6 11:10:13

关于lisp例程,你一直在问,这是张贴在这里的。
 
复制内容并粘贴到记事本中。txt文件,并称之为导出表。lsp。
 
在具有类似表格的对象(直线和文字)的AutoCAD图形中,键入APPLOAD并按Enter键。
 
当“加载/卸载应用程序”窗口出现时,查找并加载前面提到的lisp文件。
 
AutoCAD将告诉您它已成功加载。关闭窗口。
 
在命令行中键入字母ETT。注:这些字母出现在代码中。你怎么会想念他们?
 
按照屏幕上的提示选择对象(使用窗口)和命名新的Excel电子表格文件(名称中不要使用XLS文件类型)。
 
将创建XLS文件,AutoCAD将告诉您在哪里可以找到该文件。转到该文件夹,用Excel打开该文件。你的数据应该在那里。
 
我使用Auto2010和MS Office 2003对此进行了测试。它也应该在AutoCAD 2007中工作。

Guest balajibth 发表于 2022-7-6 11:15:37

一个命令来了..>选择tableby window selection Without Title。。那么在这里我如何选择xls??????

Guest balajibth 发表于 2022-7-6 11:18:58

 
亲爱的评论。。。。我明白你在说什么。。。。。。其实这也很好。。还有一件事,我们想让这张桌子充满吸引力。。。。像顶部标题列文字是一些什么高度与一个colur。。。而表格剩余文字颜色不同,字体大小不同。。。。根据这个需要,我想先把桌子炸开。。假设我被分解了,表格意味着我无法导出到excel格式。。。。。。那么我可以在cad中创建表格吗。。。。。字体大小和颜色不同。。所以只有我被问到这个Lisp程序。。。。用于导出到excel。。。。。或者我们也可以从excel导入。。所以我期待你给我的任何一个。。你能澄清一下吗??????????
页: 1 [2]
查看完整版本: dwg到xls例程?