设计表 Design table _3 修改单元格内容
1 修改表格内容,使用方法是SetEntryValue,如果使用SetEntryText会报错
2 修改时不能使用该api修改表格对应的配置名称列内容,如下图,修改时的0列是实际值的0列不包含配置名称列
修改设计表的值单元格
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配置所以会有弹窗
使用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);
}