设计表 Design table _3 修改单元格内容

1 修改表格内容,使用方法是SetEntryValue,如果使用SetEntryText会报错

2 修改时不能使用该api修改表格对应的配置名称列内容,如下图,修改时的0列是实际值的0列不包含配置名称列

image

修改设计表的值单元格
private void btnChangeModelCellValue_Click(object sender, EventArgs e)
        {
            var swApp = Utility.ConnectToSolidWorks();
            var swModelDoc = (ModelDoc2)swApp.ActiveDoc;

            //手动操作设计表时,如果增加行就会增加一个配置,删除一个配置也会对应删除一行
            //获取设计表
            DesignTable designTable = swModelDoc.GetDesignTable();
            //激活设计表,如果激活成功, 其实页面会打开这个表格
            bool attchReault = designTable.Attach();
            if (!attchReault) return;

            //显示修改前第一行文字的内容
            MessageBox.Show("第3行内容:"
                 + "\r\n" + designTable.GetEntryValue(2, 0)
                + " " + designTable.GetEntryValue(2, 1)
                + " " + designTable.GetEntryValue(2, 2)
                + " " + designTable.GetEntryValue(2, 3));
            //修改1行0列的内容为R100,行3列的内容为200

            //designTable.SetEntryText(2, 0, "R100");
            //designTable.SetEntryText(2, 3, "200");
            //以上写法会报错

            designTable.SetEntryValue(2, 0, true,"R100");
            designTable.SetEntryValue(2, 2, false,"200");
            //注意第一列是是不能修改的, 这里设置列数为0,是修改的值区域的第0行, 不会修改配置的名称
            
            MessageBox.Show("第3行内容:"
                 + "\r\n" + designTable.GetEntryValue(2, 0)
                + " " + designTable.GetEntryValue(2, 1)
                + " " + designTable.GetEntryValue(2, 2)
                + " " + designTable.GetEntryValue(2, 3));
        }

3 如果确实有需求是要修改上述方法改不到的范围, 例如修改配置名称, 修改表格第一行等等,那就要获取设计表这个表格对象, 用excel的worksheet对象的方法来操作。例如下图我改了excel表中的第1行, 和第三行, 其中第三行的修改表示删除R60配置, 增加了R66配置所以会有弹窗
image

使用excel中的表格对象, 注意要引入microsoft.office.interop.excel.dll,注意单元格表达用的是中括号VB用的是小括号
private void btnChangeCellValueBySsheet_Click(object sender, EventArgs e)
        {
            var swApp = Utility.ConnectToSolidWorks();
            var swModelDoc = (ModelDoc2)swApp.ActiveDoc;
            DesignTable designTable = swModelDoc.GetDesignTable();
            bool attchReault = designTable.Attach();
            if (!attchReault) return;

            Microsoft.Office.Interop.Excel.Worksheet workSheet = designTable.Worksheet ;

            workSheet.Cells[1,1].value = 30;
            workSheet.Cells[3, 1].value = "R66";
			//也可以这样写单元格,或者单元格的范围
			workSheet.Range["A7"].Value = 20;
			foreach (Microsoft.Office.Interop.Excel.Range cell in workSheet.Range["A1:D1"])
            {
                cell.Value ="test";
            }
            designTable.UpdateTable(2, true);

        }
posted @ 2025-08-17 16:36  elepeipei  阅读(5)  评论(0)    收藏  举报