UG/NX 二次开发(C#) Access数据库表的操作

 本人是资深C# Web开发从业者,今天同事跟我提了一个小小的需求,因为他是设计出身半路出家做二次开发,业务很熟但是开发基础薄弱。

他的需求如下:

1、一次获取access数据库所有表数据dataset

2、写一个方法,传入表名返回表数据datatable(这个需求可能是因为同事不会写sql语句)

一、先上第一个需求的源码:

        public static DataSet GetData()
        {
            string mdbPath = @"D:\NXOPEN\application\Common\PARAM-NG\Dbs\Mould\Lkm\Lkm.mdb";
            SlqHelper helper = new SlqHelper();
            DataSet ds = helper.GetAllTable(mdbPath);
            return ds;
        }

        /// <summary>
        /// 一次获取access数据库所有表数据
        /// </summary>
        /// <param name="dbSource"></param>
        /// <returns></returns>
        public DataSet GetAllTable(string dbSource)
        {
            DataSet ds = new DataSet();
            DataTable dtTableName = new DataTable();
            string sqlStr = string.Format(@"SELECT MSysObjects.Name FROM MsysObjects  WHERE (Left([Name],1)<>'{0}') AND (Left$([Name
<think>我们正在讨论使用C#和NPOI库在NX二次开发操作Excel。首先,需要明确几个关键点: 1. NX二次开发:使用C#语言在Siemens NX软件中进行二次开发,通常需要引用NXOpen的dll。 2. NPOI库:一个开源的.NET库,用于操作Microsoft Office文档(包括Excel),无需安装Office。 目标:在NX二次开发环境中,使用C#和NPOI来读写Excel文件。 步骤: 1. 环境准备: - 确保NX开发环境已设置(包括NXOpen的引用)。 - 下载NPOI库(可以通过NuGet安装)。 2. 在NX项目中添加NPOI引用: - 在Visual Studio中,右键项目 -> 管理NuGet程序包 -> 搜索“NPOI”并安装。 3. 编写代码操作Excel: - 创建或打开Excel文件。 - 读取或写入数据。 - 保存Excel文件。 下面是一个简单的示例,展示如何在NX二次开发中使用NPOI创建一个Excel文件并写入数据。 注意:在NX二次开发中,通常需要处理NX会话(Session)和用户界面(UI)等,但操作Excel与普通C#程序类似。 示例代码: ```csharp using System; using NXOpen; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // 用于操作.xlsx格式 // 注意:如果需要操作.xls(旧版Excel),则使用HSSF public class ExcelOperation { public static void Main(string[] args) { Session theSession = Session.GetSession(); Part workPart = theSession.Parts.Work; // 创建一个新的工作簿 IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); // 在第一行创建行 IRow row = sheet.CreateRow(0); // 在A1单元格写入数据 row.CreateCell(0).SetCellValue("NX Part Name"); row.CreateCell(1).SetCellValue(workPart.Name); // 在第二行写入 row = sheet.CreateRow(1); row.CreateCell(0).SetCellValue("Date"); row.CreateCell(1).SetCellValue(DateTime.Now.ToString()); // 保存工作簿 string filePath = @"C:\temp\NX_Output.xlsx"; using (System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Create)) { workbook.Write(fs); } // 提示用户 theSession.ListingWindow.Open(); theSession.ListingWindow.WriteLine($"Excel文件已保存至:{filePath}"); } } ``` 注意事项: 1. 文件路径:确保目标目录存在,否则会抛出异常。 2. 异常处理:在实际应用中,应添加异常处理(try-catch)。 3. 引用:确保项目引用了NPOI(通过NuGet安装后,会自动添加引用)。 4. 在NX中运行:此代码可以放在NX按钮的回调方法中,或者通过菜单执行。 如果需要在NX中读取Excel文件,可以参考以下代码片段: ```csharp // 读取Excel文件 string filePath = @"C:\temp\NX_Input.xlsx"; using (System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read)) { IWorkbook workbook = new XSSFWorkbook(fs); ISheet sheet = workbook.GetSheetAt(0); // 第一个工作 // 读取第一行第一列 IRow row = sheet.GetRow(0); if (row != null) { ICell cell = row.GetCell(0); if (cell != null) { string value = cell.ToString(); // 使用value } } } ``` 在NX二次开发中,操作Excel可以用于参数化设计、读取配置、导出报告等。 §§相关问题§§ 1. 如何在NX二次开发中处理Excel文件路径选择对话框? 2. 如何避免NPOI在读写Excel时占用文件导致无法再次访问? 3. 在NX二次开发中,如何将Excel数据与NX模型参数关联?</think>### C# NPOI库在NX二次开发操作Excel指南 在NX二次开发中使用C#和NPOI操作Excel需要整合NXOpen API和NPOI库,以下是详细实现步骤: #### 1. 环境配置 - **添加NPOI引用**:通过NuGet安装NPOI包 ```powershell Install-Package NPOI ``` - **NX二次开发依赖**:在项目中引用NXOpen.dll(通常位于`UGII`目录) - **命名空间引用**: ```csharp using NXOpen; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // .xlsx格式 using NPOI.HSSF.UserModel; // .xls格式 using System.IO; ``` #### 2. 创建Excel文件(示例:导出部件信息) ```csharp public static void ExportPartData() { Session theSession = Session.GetSession(); Part workPart = theSession.Parts.Work; // 创建Excel工作簿 IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("部件数据"); // 创建标题行 IRow headerRow = sheet.CreateRow(0); headerRow.CreateCell(0).SetCellValue("部件名称"); headerRow.CreateCell(1).SetCellValue("单位"); headerRow.CreateCell(2).SetCellValue("创建时间"); // 填充数据 IRow dataRow = sheet.CreateRow(1); dataRow.CreateCell(0).SetCellValue(workPart.Name); dataRow.CreateCell(1).SetCellValue(workPart.PartUnits.ToString()); dataRow.CreateCell(2).SetCellValue(workPart.CreationDate.ToString()); // 保存文件 string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "NX_Export.xlsx"); using (FileStream fs = new FileStream(filePath, FileMode.Create)) { workbook.Write(fs); } theSession.ListingWindow.Open(); theSession.ListingWindow.WriteLine($"Excel文件已导出至: {filePath}"); } ``` #### 3. 读取Excel数据(示例:导入参数) ```csharp public static void ImportParameters() { string filePath = @"C:\params.xlsx"; using (FileStream fs = new FileStream(filePath, FileMode.Open)) { IWorkbook workbook = new XSSFWorkbook(fs); ISheet sheet = workbook.GetSheetAt(0); for (int i = 1; i <= sheet.LastRowNum; i++) // 跳过标题行 { IRow row = sheet.GetRow(i); if (row == null) continue; string paramName = row.GetCell(0)?.ToString() ?? ""; double paramValue = row.GetCell(1)?.NumericCellValue ?? 0; // 在NX中更新参数(伪代码示例) // UpdateNXParameter(paramName, paramValue); } } Session.GetSession().ListingWindow.WriteLine("参数导入完成"); } ``` #### 4. 关键注意事项 1. **文件占用问题**:操作完成后务必释放资源 ```csharp // 正确释放资源方式 using (var fs = new FileStream(path, FileMode.Create)) { workbook.Write(fs); } ``` 2. **数据类型处理**: ```csharp // 获取不同类型数据 switch (cell.CellType) { case CellType.Numeric: double numValue = cell.NumericCellValue; break; case CellType.String: string strValue = cell.StringCellValue; break; } ``` 3. **NX线程安全**:在UI线程执行NX操作 ```csharp NXOpen.Session theSession = NXOpen.Session.GetSession(); theSession.ApplicationSwitchImmediate("UG_APP_MODELING"); ``` #### 5. 典型应用场景 - **批量参数导入/导出**:连接Excel与NX达式 - **BOM生成**:提取装配结构生成物料清单 - **质量报告**:导出零件检测数据 - **自动化配置**:根据Excel配置自动建模
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarcoPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值