C# AutoCAD npoi导入excel,并将其中的所有数据添加到扩展记录中
时间: 2024-03-20 22:43:52 浏览: 34
要使用NPOI库读取Excel文件,您需要先使用NuGet包管理器安装NPOI。然后,您可以使用以下代码读取Excel文件中的所有数据并将其添加到扩展记录中:
```
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
public void ImportExcelToExtensionData(string filePath)
{
//打开Excel文件
FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook = new XSSFWorkbook(stream);
ISheet sheet = workbook.GetSheetAt(0);
//获取AutoCAD当前文档的数据库和编辑器
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
try
{
//打开实体
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(ObjectId.FromHandle(acTrans.GetObject(acCurDb.CurrentSpaceId, OpenMode.ForWrite)), OpenMode.ForWrite));
//循环遍历Excel表格中的每一行
for (int i = sheet.FirstRowNum; i <= sheet.LastRowNum; i++)
{
IRow row = sheet.GetRow(i);
//循环遍历每一行中的每一列
for (int j = row.FirstCellNum; j < row.LastCellNum; j++)
{
ICell cell = row.GetCell(j);
//将单元格的数据添加到扩展记录中
if (cell != null)
{
string data = cell.ToString();
ResultBuffer rb = new ResultBuffer();
rb.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, "MyApp"));
rb.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, data));
Xrecord xRec = new Xrecord();
xRec.Data = rb;
btr.AppendEntity(xRec);
tr.AddNewlyCreatedDBObject(xRec, true);
}
}
}
//提交事务
tr.Commit();
}
catch (Exception ex)
{
//回滚事务
tr.Rollback();
ed.WriteMessage("Error: " + ex.Message);
}
}
}
```
这将在AutoCAD中添加扩展记录,其中包含Excel文件中的所有数据。请注意,需要将“MyApp”替换为您要使用的应用程序的名称。