导入表格批量指定对象名称

要干啥

通过访问自己建立的excel表格中的相关参数,结合UI对话框,快速设置相关对象的名称,以便后续对这些对象进行某些操作,如批量标注PMI尺寸等。

怎么干

这里以圆柱体为例,对其边进行批量设置名称,通过pandas库中的某些函数访问所创建的excel表,拿到相应参数,然后结合UI块,实现让用户设置所选择对象的名称,这里分以下几步:

第一步:拿到excel表格中的参数

代码如下:定义一个excel_data类,并在choose_excel_data方法中定义一个实例属性list,这个list用于装拿到的名称,即边1,边2,边3,边4。

class excel_data:
    def choose_excel_data(self):
        self.list=[]
        excel_data=pd.read_excel('C:\\Users\\dasfan\\Desktop\\对象名称表格.xlsx',sheet_name=0)
        rows,columns=excel_data.shape
        for i in range(rows):
            data=excel_data.loc[i,'特征名称']
            self.list.append(data)

第二步:设置对话框属性 

在UI块生成的py代码中,对initialize_cb进行某些设置,以便更改每次弹出的对话框的名称,代码如下,我总共拿到了四个参数:边1,边2,边3,边4,因此我将总共弹出四次对话框,每次弹出的对话框名=名称分别为:请设置名称:边1;请设置名称:边2;请设置名称:边3;请设置名称:边4。

    def initialize_cb(self):
        try:
            self.group0 = self.theDialog.TopBlock.FindBlock("group0")
            self.edge_select0 = self.theDialog.TopBlock.FindBlock("edge_select0")
            self.edge_select0.GetProperties().SetString('LabelString','请设置名称:{}'.format(self.t))
        except Exception as ex:
            self.theUI.NXMessageBox.Show("Block Styler", NXOpen.NXMessageBox.DialogType.Error, str(ex))

第三步:设置名称

在ok_cb回调方法中用函数setname设置名称,代码如下,遍历所选对象并拿到它们的Tag值,当然这里每次弹出对话框我们只选择一条曲线,然后设置self.data,即所要设置的名称。

    def ok_cb(self):
        errorCode = 0
        try:
            errorCode = self.apply_cb()
            if errorCode==0:

                self.select_list=self.edge_select0.GetSelectedObjects()
                for obj in self.select_list:
                    self.uf_session.Obj.SetName(obj.Tag,'{}'.format(self.data))
        except Exception as ex:
            errorCode = 1
            self.theUI.NXMessageBox.Show("Block Styler", NXOpen.NXMessageBox.DialogType.Error, str(ex))
        
        return errorCode

第四步:启动

设置一个函数,例化所有之前创建好的类,对各个类的实例属性赋予相应参数,并启动它,代码如下:

def main_control():

    excel_data_instance=excel_data()
    excel_data_instance.choose_excel_data()
    
    for i in excel_data_instance.list:
        test1_instance=test1()
        test1_instance.t=i
        test1_instance.data=i
        test1_instance.Show()
        test1_instance.Dispose()   

        
        
    
    
if __name__ == '__main__':
    main_control()

最终效果:

最终效果如下,四个圆柱的顶边分别被赋予了名称边1,边2,边3,边4。

 

### 回答1: VB Excel可以通过编写宏来实现批量导入Access数据库。下面是一个简单的示例代码: Sub ImportToAccess() Dim db As Object Dim rs As Object Dim strSQL As String Dim wb As Workbook Dim ws As Worksheet Dim rng As Range Dim i As Integer ' 打开Access数据库 Set db = CreateObject("Access.Application") db.OpenCurrentDatabase "C:\path\to\database.accdb" ' 设置需要导入的Excel工作簿和工作表 Set wb = ThisWorkbook Set ws = wb.Worksheets("Sheet1") ' 设置需要导入的数据范围(假设数据位于A1到C10) Set rng = ws.Range("A1:C10") ' 遍历数据范围并导入到Access数据库 For i = 1 To rng.Rows.Count ' 构建插入SQL语句(假设Access表格名称为Table1,字段分别为Field1,Field2,Field3) strSQL = "INSERT INTO Table1 (Field1, Field2, Field3) VALUES ('" & rng.Cells(i, 1) & "', '" & rng.Cells(i, 2) & "', '" & rng.Cells(i, 3) & "')" ' 执行SQL语句 db.CurrentDb.Execute strSQL Next i ' 清理对象 Set rng = Nothing Set ws = Nothing Set wb = Nothing db.CloseCurrentDatabase Set db = Nothing MsgBox "导入成功!" End Sub 以上代码通过创建一个Access对象,打开需要导入数据的Access数据库。然后,通过设置Excel的工作簿和工作表,以及需要导入的数据范围,将数据逐行遍历并构建SQL语句进行导入。最后,清理对象,并弹出一个消息框提示导入成功。 请注意,上述代码仅为示例,具体的导入操作可能需要根据实际情况进行调整和修改。 ### 回答2: 在VB Excel中批量导入Access,我们可以使用ADO(ActiveX Data Objects)对象库来实现。以下是一种实现方式: 首先,我们需要添加对Microsoft ActiveX Data Objects Library的引用。在VB Editor中,选择"工具"->"引用",然后勾选"Microsoft ActiveX Data Objects X.X Library"。 接下来,我们可以使用以下代码来实现批量导入: ```vb Sub ImportDataToAccess() Dim conn As Object Dim rs As Object Dim strSQL As String Dim i As Integer '创建连接对象 Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\your_access_database.accdb;" '创建记录集对象 Set rs = CreateObject("ADODB.Recordset") '循环导入Excel数据到Access For i = 1 To 100 '假设数据从第1行到第100行 strSQL = "INSERT INTO your_table_name (field1, field2, field3) VALUES ('" & _ Worksheets("Sheet1").Cells(i, 1).Value & "', '" & _ Worksheets("Sheet1").Cells(i, 2).Value & "', '" & _ Worksheets("Sheet1").Cells(i, 3).Value & "')" conn.Execute strSQL '执行SQL语句 '检查是否导入成功 If Err.Number <> 0 Then MsgBox "导入数据失败:" & Err.Description End If Next i '关闭连接和记录集对象 rs.Close conn.Close '释放对象内存 Set rs = Nothing Set conn = Nothing '显示导入完成消息 MsgBox "数据已成功导入Access数据库!" End Sub ``` 上述代码会将当前工作簿中的Sheet1工作表中的数据逐行导入到Access数据库中指定的表(your_table_name)。需要根据实际情况修改数据源和目标表的名称。 在这个示例中,我们使用了ADODB.Connection对象来连接Access数据库,使用ADODB.Recordset对象来执行SQL语句。 通过以上方法,我们可以实现在VB Excel中批量导入Access的功能。 ### 回答3: 通过使用VB(Visual Basic)编程和Excel VBA(Visual Basic for Applications),可以实现将数据批量导入Access数据库的操作。 首先,需要在Excel中准备好要导入的数据。可以在Excel的一个或多个工作表中创建一个数据表,确保表头与Access数据库中要导入的表结构相匹配。 接下来,打开Excel的开发人员工具,并创建一个新的宏。在宏的代码编辑器中,可以使用ADO(ActiveX Data Objects)库来处理与Access数据库的连接和数据操作。 start time 首先,需要在代码的开头添加对ADO库的引用。这可以通过选择“工具”菜单下的“引用”选项,然后在弹出的对话框中找到并勾选“Microsoft ActiveX Data Objects Library”来实现。 下一步是创建一个连接字符串,用于连接到Access数据库。连接字符串中需要指定Access数据库文件的路径和名称。 然后,可以使用ADO库创建一个ADODB.Connection对象,并使用刚刚创建的连接字符串打开数据库连接。 接下来,可以使用ADO库创建一个ADODB.Recordset对象,用于执行SQL查询语句。可以编写一个查询语句,从Excel中选择要导入的数据。 然后,可以使用Recordset对象的AddNew方法将数据逐行导入Access数据库。在每次迭代中,可以使用Recordset对象的Fields属性来设置每个字段的值。 最后,需要使用Recordset对象的UpdateBatch方法将保存的更改提交到Access数据库,并关闭数据库连接。 完成以上操作后,可以运行宏,Excel中的数据将被批量导入Access数据库。 需要注意的是,在执行导入操作前,还需要确保Access数据库中的表结构与Excel中的数据表完全匹配。 总结起来,通过使用VB和Excel VBA,可以编写一段代码来批量导入数据到Access数据库中。这样可以大大简化手动导入数据的过程,提高工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值