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参考。