C# Minitab自动化和跳过列
我的主要代码如下:C# Minitab自动化和跳过列,c#,.net,minitab,C#,.net,Minitab,我的主要代码如下: Mtb.Application MtbApp = new Mtb.Application(); MtbApp.UserInterface.Visible = true; MtbApp.UserInterface.DisplayAlerts = false; Mtb.Project MtbProj = MtbApp.ActiveProject; Mtb.Columns MtbColumns; Mtb.Column MtbColumn1; Double[] data1; H
Mtb.Application MtbApp = new Mtb.Application();
MtbApp.UserInterface.Visible = true;
MtbApp.UserInterface.DisplayAlerts = false;
Mtb.Project MtbProj = MtbApp.ActiveProject;
Mtb.Columns MtbColumns;
Mtb.Column MtbColumn1;
Double[] data1;
Hashtable htSingleColumn;
List<double> listSingleColumn;
int i = 1 ;
foreach (DictionaryEntry de in htDataTable)
{
htSingleColumn = (Hashtable)de.Value;
listSingleColumn = (List<double>)htSingleColumn["listSingleData"];
data1 = listSingleColumn.ToArray();
MtbColumns = MtbProj.ActiveWorksheet.Columns;
MtbColumn1 = MtbColumns.Add(null, null, i);
MtbColumn1.SetData(data1);
// strLowlim and strUpplim have no influence on this issue here
strCommand = "Capa C" + i+" 1;" + ((strLowlim == "NA") ? "" : (" Lspec " + strLowlim + ";")) +((strUpplim == "NA") ? "" : (" Uspec " + strUpplim + ";"))+ " Pooled; AMR; UnBiased; OBiased; Toler 6; Within; Percent; CStat.";
// The program is crashing here as a result of the columns not being created sequentially
MtbProj.ExecuteCommand(strCommand);
Mtb.Graph MtbGraph = MtbProj.Commands.Item(i).Outputs.Item(1).Graph;
MtbGraph.SaveAs("C:\\MyGraph" + DateTime.Now.ToString("yyyy-MM-dd HHmmss"), true, Mtb.MtbGraphFileTypes.GFPNGHighColor);
i++;
}
MtbApp.Quit();
Mtb.Application MtbApp=new Mtb.Application();
MtbApp.UserInterface.Visible=true;
MtbApp.UserInterface.DisplayAlerts=false;
Mtb.Project MtbProj=MtbApp.ActiveProject;
Mtb.列Mtb列;
Mtb.列Mtb列1;
双[]数据1;
Hashtable-htSingleColumn;
单列列表;
int i=1;
foreach(htDataTable中的DictionaryEntry de)
{
htSingleColumn=(Hashtable)de.Value;
listSingleColumn=(列表)htSingleColumn[“listSingleData”];
data1=listSingleColumn.ToArray();
MtbColumns=MtbProj.ActiveWorksheet.Columns;
MtbColumn1=MtbColumns.Add(null,null,i);
MtbColumn1.SetData(data1);
//strLowlim和strUpplim在此问题上没有影响
strCommand=“Capa C”+i+“1;”+((strLowlim=“NA”):((Lspec“+strLowlim+”;))+((strUpplim=“NA”):(((Uspec“+strUpplim+”)))+“合并;资产负债率;无偏;obibase;托勒6;以内;百分比;CStat。”;
//由于没有按顺序创建列,程序在此崩溃
MtbProj.执行命令(strCommand);
Mtb.Graph MtbGraph=MtbProj.Commands.Item(i).Outputs.Item(1).Graph;
MtbGraph.SaveAs(“C:\\MyGraph”+DateTime.Now.ToString(“yyyy-MM-dd-HHmmss”),true,Mtb.MtbGraphFileTypes.GFPNGHighColor);
i++;
}
MtbApp.Quit();
运行此代码时(将崩溃部分注释掉),我得到以下输出:
应该是这样的:
我真的对这个结果感到困惑。变量i
是正确的,但什么会影响列数
我在网上找不到很多关于Minitab的信息。我只是在这里读了这本书 这条线就是问题所在
MtbColumn1 = MtbColumns.Add(null, null, i);
第三个参数Quantity指定要添加的列数。在循环的第一次迭代中,您添加了i=1
列,但在循环的第二次迭代中,您添加了i=2
列。循环的每次迭代都将添加一个额外的i
列,而您真正想要的是每次添加一列
将行更改为:
MtbColumn1 = MtbColumns.Add();
这条线就是问题所在
MtbColumn1 = MtbColumns.Add(null, null, i);
第三个参数Quantity指定要添加的列数。在循环的第一次迭代中,您添加了i=1
列,但在循环的第二次迭代中,您添加了i=2
列。循环的每次迭代都将添加一个额外的i
列,而您真正想要的是每次添加一列
将行更改为:
MtbColumn1 = MtbColumns.Add();
如果不添加列会发生什么情况?您的意思是“MtbColumn1=MtbColumns.add(null,null,i);”?我现在找到并重新测试了它。我将模式设置为“MtbColumn1=MtbColumns.Add(null,null,1);”,这次运行良好。如果不添加列会发生什么?你是说“MtbColumn1=MtbColumns.Add(null,null,I);”?我现在找到了它并重新测试了它。我将其模式化为“MtbColumn1=MtbColumns.Add(null,null,1);”,这次它运行得很好。是的,就是它。我只是复制了包含很少注释的代码,我只能找到一些关于minitab的文档。你能提供一些文档吗?minitab帮助文件有一个API引用。是的,就是这样。我只是复制代码,其中包含很少的注释,我只能找到一些关于minitab的文档。请提供一些文档给我好吗?minitab帮助文件有一个API参考。