. net Excel w/CAD建议
我需要编写一些代码,使用excel表单上的数据在autocad中绘制一些东西。本质上,它需要是excel中的一个按钮,可以在CAD中启动命令并开始绘制,或者是CAD中的一条命令,可以获取excel数据。我在寻找那些做过这件事的人的建议……不是代码,而是您愿意分享的任何经验,这些经验可以帮助我在开始编写代码时避免陷阱或问题<非常感谢!
**** Hidden Message ***** 最近我发现了EPPlus,它只是一个能够读写.xlsx文件的DLL。有更多的解决方案,但这个解决方案非常强大
可以使用它从AutoCAD开始抓取。如果要从Excel内部执行此操作,需要编写宏。我对此没有经验。 如果您在excel中的数据是“平面”格式,那么将excel数据导出为csv,然后将csv读取到AutoCAD中进行绘图将非常容易。即使您将此作为开发过程的“第一阶段”作为概念证明,然后确定是从Excel还是AutoCAD自动化它,无论哪种方式,您都需要同时使用两个API,但至少您将完成绘图引擎和可行的解决方案 谢谢你的两个想法,米克德/哈伊兹。非常感谢!
CSV当然很容易编写,但在某些国家/地区,您必须将Excel中的逗号作为十进制分隔符或点作为千个分隔符来处理。当使用逗号时,列分隔符必须是分号。所以读取CSV更困难。我还遇到了重音字符的问题,所以您必须以正确的UTF方式编写文件。
您也可以四处寻找CSV类,它会遇到这些瓶颈。 公平点Huiz!
但是有一个解决方法。将csv分隔符设置为其他符号,如“;”或者“|”。这里有一个例子,在快速搜索之后。
https://www . itsupportguides . com/knowledge-base/office-2013/excel-2013 2016-how-to-change-CSV-delimiter-character/
写一个'?'也是相当琐碎的sv解析器使用类似my_string的东西。拆分(';')例如,只要数据是格式良好的。从Excel出来应该没问题。
您的excel表中有多少数据?如果您可以将其限制为150行和5张,您可以使用GENbox电子表格。免费版本功能齐全,具有前面提到的恢复功能。从他们的网页:
GemBox.Spreadsheet是一个. NET组件,使您能够使用一个简单的API从您的. NET应用程序中读取、写入、编辑、转换和打印电子表格文件。
有了GemBox.Spreadsheet,您就可以获得一个易于使用的快速可靠的组件。它只需要. NET框架,因此您可以轻松部署您的应用程序,而无需考虑其他许可证。而且它比Microsoft Excel自动化快250倍!
https://www.gemboxsoftware.com/spreadsheet 虽然其他答复都提供了非常有用的意见,但我想补充一点
在AutoCAD中使用外部数据生成实体(或在AutoCAD中执行任何操作)是一个非常常见的过程。在编写此类任务时,将AutoCAD内部的过程与数据存储格式解耦非常重要。也就是说,在AutoCAD中,您可以定义数据类/模型,用于保存运行时数据,以便AutoCAD执行其工作。然后定义am接口,用于访问来自任何数据存储的数据。然后,您可以针对不同的数据存储有不同的数据访问实现。对于AutoCAD,它完全不考虑外部数据存储,即*中的数据。xls或in*。是否安装了csv或Excel应用程序,或是否将数据存储在某种数据库中。 我的第一个偏好是始终运行AutoCAD并使用外部数据文件,而不是通过外部程序驱动AutoCAD。
我也倾向于远离Excel和其他Office应用程序进行数据存储,因为升级/补丁可以很容易地“切断电线”。 你自己的计算机不是问题,而是投入了几十个人和IT推送更新,这是一件苦差事。 使用Excel的另一个缺点是用户可以删除/隐藏/合并单元格行和列;当你的程序期望某些东西可用,或者那里有一些东西被隐藏和遗忘时,它会给这个过程带来麻烦。
因此,我开始使用 XML 进行小规模数据存储。 我可以在CAD中构建一个用户界面,迫使用户做正确的事情,并且可以使用各种文本编辑器手动调整内容。 它不仅限于平面 X-by-Y 维度,还可以通过应用样式表转换为 HTML、CSV 或其他文本文件(我有一个技术测试人员,可以在某个地方生成 LIN 文件)。 n.yuan和dgorsman都提出了很好的观点。尽可能保持数据和AutoCAD解耦。在我的书中,接口在任何时候都胜过类,并且是将底层结构可能非常不同的不同组件“插在一起”的极好方式。
尽可能保持简单,虽然从一个应用程序中自动化整个过程对用户来说似乎更容易,但开发解决方案可能比它的价值更痛苦/成本更高。在每个应用程序中,你实际上是在说几秒钟来导出和导入数据,而将它们耦合在一起的开发和维护将是一个持续的成本和潜在的错误来源,如上所述。
在我开始一个新的应用程序之前,我喜欢参考“Unix基本原理”页面,以控制这个过程,至少前六点适用于此:
https://home page . cs . uri . edu/~ then ry/resources/Unix _ art/ch01s 06 . html
页:
[1]
2