找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2086|回复: 7

[每日一码] 在AutoCAD中动态读取Excel数据(C#)

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2017-5-21 15:10:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[C#] 纯文本查看 复制代码
using System; 
using Autodesk.AutoCAD.Runtime;
using System.Data.OleDb;
using System.Data;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
namespace ClassLibrary
{
    public class arxClass
    {
        [CommandMethod("Test")]
        static public void test()
        {
            string filePath = "C:\\test.xls";//Excel文件名
            //Excel连接字符串 
            string mystring = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + filePath + "';Extended Properties=Excel 8.0";
            OleDbConnection cnnxls = new OleDbConnection(mystring);
            //选择test.xls中的Sheet1表格,请注意在表格名最后加上$符号
            OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);
            DataSet myDs = new DataSet();
            myDa.Fill(myDs);
            System.Data.DataTable table = myDs.Tables[0];//获取Sheet1表格所对应的DataTable对象,这样才能进行相关的操作
            //选取Sheet表格中第二行第一列的数据(请注意,DataTable对象认为Excel表格的第一行为表格的标题)
            double radius = Convert.ToDouble(table.Rows[0][0]);
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ObjectId id = ed.GetEntity("select circle").ObjectId;
            Database db=HostApplicationServices.WorkingDatabase;
            using (Transaction trans=db.TransactionManager.StartTransaction())
            {
                Circle cir = (Circle)trans.GetObject(id, OpenMode.ForWrite);
                cir.Radius = radius;
                trans.Commit();
            }
        }
    }
}


下面是vb.net

[Visual Basic .NET] 纯文本查看 复制代码
Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime
Imports System.Data.OleDb

Public Class Class1
    <CommandMethod("test")>
        Public Sub test()
        'Excel文件名
        Dim filePath As String = "C:\test.xls"

        'Excel连接字符串            
        Dim mystring As String = "rovider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" & filePath & "';Extended Properties=Excel 8.0"
        Dim cnnxls As OleDbConnection = New OleDbConnection(mystring)

        '选择test.xls中的Sheet1表格,请注意在表格名最后加上$符号
        Dim myDa As OleDbDataAdapter = New OleDbDataAdapter("select * from [Sheet1$]", cnnxls)
        Dim myDs As DataSet = New DataSet()
        myDa.Fill(myDs)

        '获取Sheet1表格所对应的DataTable对象,这样才能进行相关的操作
        Dim table As System.Data.DataTable = myDs.Tables(0)

        '选取Sheet表格中第二行第一列的数据(请注意,DataTable对象认为Excel表格的第一行为表格的标题,必须有内容,不能空白)
        Dim radius As Double = Convert.ToDouble(table.Rows(0)(0))

        Dim db As Database = HostApplicationServices.WorkingDatabase
        Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
        Dim id As ObjectId = ed.GetEntity("请选择一个圆:").ObjectId

        Using trans As Transaction = db.TransactionManager.StartTransaction
            Dim cir As Circle = trans.GetObject(id, OpenMode.ForWrite)
            cir.Radius = radius
            trans.Commit()
        End Using
    End Sub
End Class

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 859个

财富等级: 财运亨通

发表于 2017-5-22 06:57:08 来自手机 | 显示全部楼层
有的机器不一定安装OLEDB,C# 用免费的不依赖EXCEL的EPPLus或NPOI更好
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2017-5-22 17:08:29 | 显示全部楼层
学习。。。。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 53个

财富等级: 招财进宝

发表于 2017-7-4 08:50:57 | 显示全部楼层
c#,vb代码都有,真是极好的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-9-20 09:10:08 | 显示全部楼层
注释的很清楚,很好的编程习惯,赞一个
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

发表于 2018-11-9 20:16:18 | 显示全部楼层
感谢分享,学习了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 82个

财富等级: 招财进宝

发表于 2020-4-3 09:32:25 | 显示全部楼层
赞一个
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2020-9-11 22:32:31 | 显示全部楼层
用C#,怎么在CAD中加载?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 21:41 , Processed in 0.187982 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表