乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 46|回复: 11

[编程交流] Excel文件问题

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:29:09 | 显示全部楼层 |阅读模式
我试图在相对较短的时间内成为Excel和AutoCAD之间接口的专家。因此,目前我正跌跌撞撞地处理其中许多问题。今天早上我发现了一个很好的LISP代码集,它可以处理Excel文件,叫做GetExcel。lsp。到目前为止,通过研究代码,我学到了很多东西,但有些问题我似乎无法解决。首先,可怕的(vl load com)问题。我一直很困惑,为什么开发人员在阅读李·麦克斯关于阿卡多克的有见地的帖子之前,不把这一点写在代码中。lsp。
 
我有一个非常简单的电子表格,只有3个单元格中的值。当我调用代码的GetExcel部分时,我一直收到以下消息:
 
; 错误:自动化错误。Excel无法访问“模板”。文件可能是
只读或加密。
 
有问题的文件既没有被其他人打开,也没有设置为R/O。我可以发布我正在使用的代码,但它相当长,可以通过以下URL获得:
 
http://web2.iadfw.net/terrycad/LISP/GetExcel.lsp
 
我的目标是学习如何打开任何Excel文件,读取所需的数据,然后能够根据尺寸值快速创建图形。如果我能找到一种方法将Excel中的数据输入到AutoCAD文件中,我想我可以处理这一部分。
 
再次感谢大家的耐心。我意识到,在这个论坛上,对一个来自经验丰富的程序员的新手来说,这是一个残酷的解释。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:38:59 | 显示全部楼层
嗨,比尔,
 
你给自己设置了一个相当大的挑战!在过去,我编写了很多与Excel交互的应用程序,有些是免费软件,有些不是,但在我看来,使用Excel最困难的部分之一是Excel API的大小,再加上MSDN文档的布局,有时就像在迷宫中导航。
 
以下是Swamp中的一些示例,可以帮助您实现目标:
 
http://www.theswamp.org/index.php?topic=31441.0
http://www.theswamp.org/index.php?topic=10101.0
http://www.theswamp.org/index.php?topic=35157.0
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:43:06 | 显示全部楼层
以下是MSDN文档:
 
Excel对象模型参考
Excel对象模型映射
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:46:20 | 显示全部楼层
非常感谢。最近几个月我失业了,急需一份工作,我真的很为难。一家当地公司请我帮忙,如果我能证明至少我能完成基本的工作,我可能会和他们一起完成一个长期项目。他们希望在Exel和AutoCAD之间建立接口。我的编程技能不是最好的,但每天都在提高,所以我要赶上这列火车。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:52:52 | 显示全部楼层
祝你好运,比尔!
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:57:19 | 显示全部楼层
它开始对我起作用了。我已经获得了返回列表*ExcelData@的GetExcel代码,其中包含以下内容:
 
((“1”“2”“3”))这与我预期的类似,因为单元格A1、B1和C1分别包含值1、2和3。我之前有个大脑放屁,把那个部分搞错了。
 
所以我现在要解析它,并隔离列表中的三个项目,以便将它们分配给变量。在匆忙中,我试着:
 
(setq pt1(car*ExcelData@))
 
我假设它将返回“1”或仅1作为列表中的第一项。但相反,pt1最终是(“1”“2”“3”),只删除了一组偏执。
 
好的,我现在看到了曙光。如果我要求(car*ExcelData@),我会删除列表中的外部参数,因为这实际上是列表中的第一项。然后我要求(汽车pt1),我得到“1”。。。。万岁,但我怎样才能摆脱引用?或者,当我打算使用这些值作为维度,最终绘制一些简单的形状,如矩形和直线等时,是否有必要将其转换为数字。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:02:34 | 显示全部楼层
  1. (mapcar 'atof (car *ExcelData@))
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 09:12:22 | 显示全部楼层
  1. (setq pt1 (mapcar 'atof (car *ExcelData@)))
  2. (setq pt2 (car pt1))
  3. (setq pt3 (cadr pt1))
  4. (setq pt4 (caddr pt1))

 
这让我今天达到了我想要的境界。这三个值现在分配给我可以在AutoCAD中使用并绘制一些图形的对象。现在我很危险。正如他们所说,我现在知道的足够多,真的把事情搞砸了。。。。!
 
今天,一个简单的电子表格。。。。明天,全世界!
回复

使用道具 举报

5

主题

183

帖子

178

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 09:16:46 | 显示全部楼层
比尔,你有AutoCad Map 3D吗?如果是这样,手头的任务就会容易得多。在您回复之前,我将保留该选项,而Map 3D在数据库文件(即转换的Excel文件)方面具有与ArcGIS软件相同的功能。一旦你将数据导入Map 3D,你就可以用它制作专题地图。
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 09:21:27 | 显示全部楼层
不,我没有使用3D Civil,我更喜欢建筑/结构用户。所以我必须使用普通的AutoCAD。
 
今天我有很多分心的事情,但我能够回来玩GetExcel。lsp程序。事实证明,其中还有另一个名为GetCell的模块,它也可以解析数据,您可以简单地要求它:
 
  1. (setq pt6 (GetCell "C1"))

 
它将给出单元格“C1”中的值。不过,我学到了更多关于如何在Excel和AutoCAD之间进行交互的知识。每天我知道的比昨天多100%。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 08:51 , Processed in 0.442666 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表