本文介绍通过C#调用minitab com组建自动化生成报表的方法。

首先需要在minitab中通过手动配置的方式生成报表来得到该报表的命令行,过程如下

  1. 选择菜单“编辑器”-》“启用命令”启用命令窗口

  2. 在工作表中输入数据,并按需求配置并生成需要的报表

  3. 拷贝出会话窗口中生成该报表的命令行

得到所需的mimitab命令后就可以在C#中通过调用minitab执行该命令得到对应的报表了,过程如下

  1. 新建C#工程,并把名为Mtb 17.0 Type Library的COM库加入到该工程的引用

  2. 执行以下代码,即可根据输入的数据生成对应的报表
  3. static void Main(string[] args)
    {
    try
    {
    foreach (Process proc in Process.GetProcessesByName("Mtb"))
    {
    proc.Kill();
    }
    }
    catch (Exception ex)
    { } Mtb.Application MtbApp = new Mtb.Application();
    MtbApp.UserInterface.Visible = true;
    Console.WriteLine("Status = " + MtbApp.Status);
    Console.WriteLine("LastError = " + MtbApp.LastError);
    Console.WriteLine("Application Path = " + MtbApp.AppPath);
    Console.WriteLine("Window Handle = " + MtbApp.Handle); Mtb.Project MtbProj = MtbApp.ActiveProject;
    /*
    Mtb.Columns MtbColumns = MtbProj.ActiveWorksheet.Columns;
    Mtb.Column MtbColumn1 = MtbColumns.Add(null,null,1);
    MtbColumn1.Name = "缺陷项";
    String[] data1 = {"虚焊","漏焊","强度不够","外观受损","其他"};
    MtbColumn1.SetData(data1); Mtb.Column MtbColumn2 = MtbColumns.Add(null, null, 1);
    MtbColumn2.Name = "数量";
    Double[] data2 = { 500, 300, 200, 150, 160};
    MtbColumn2.SetData(data2);
    */ Mtb.Columns MtbColumns = MtbProj.ActiveWorksheet.Columns;
    Mtb.Column MtbColumn1 = MtbColumns.Add(null, null, );
    Double[] data1 = { , 1796.3, , 1800.8, 1800.5, 1803.6, 1794.5, 1796.9, 1802.1, 1796.5, 1795.5, 1812.8, 1795.8, 1805.6, 1798.6, 1799.6, 1803.7, 1800.9, 1799.4, 1808.6, 1800.3, , 1804.4, 1798.8, 1802.1, 1810.1, , 1809.4, 1793.3, 1803.6, , 1797.5, 1797.8, 1796.4, 1796.1, 1793.9, 1809.7, 1795.3, 1798.9, 1796.6, 1793.6, 1794.4, 1798.5, 1806.2, , 1805.4, 1806.9, 1800.7, 1799.5, 1802.3, 1791.8, 1795.5, 1798.5, 1801.1, 1794.2, 1799.4, 1792.5, 1803.7, 1805.1, 1808.9, 1795.6, 1806.3, 1799.5, 1798.9, 1799.6, 1795.8, 1799.9, 1795.1, 1806.4, 1809.6, , 1796.1, 1797.1, 1793.1, 1802.6, , 1796.5, 1799.3, 1798.6, , 1803.2, 1810.2, 1793.9, 1798.6, , , 1793.2, 1801.6, 1803.4, 1801.5, 1794.5, 1801.2, 1807.3, 1796.3, 1801.7, 1797.5, 1794.5, 1797.7, 1798.5, 1794.2, 1797.2, 1800.4, 1794.9, 1797.5, 1797.1, 1796.3, 1796.8, 1805.7, 1798.7, 1796.7, , 1793.3, 1798.4, 1809.6, 1793.2, 1791.8, 1796.8, 1797.1, 1800.7, 1797.3, 1799.5, , 1802.7, 1800.9, , 1805.9, 1802.6, 1800.8, 1795.9, 1801.9, 1807.8, 1798.4, 1795.6, 1789.7, 1801.9, 1797.9, 1799.5, 1805.8, 1804.8, 1795.7, 1797.4, 1801.8, 1788.5, 1802.3, 1800.3, 1798.3, 1802.6, 1794.8, , 1794.5, 1800.2, 1799.8, , 1797.7, 1804.7, 1800.9, 1799.5, , 1796.4, 1801.5, 1801.4, 1801.8, 1813.7, 1796.4, 1805.4, 1797.6, , 1792.6, 1809.8, 1799.8, 1804.8, 1798.9, 1801.4, 1798.1, 1802.4, 1803.7, 1796.9, 1808.8, 1798.9, 1795.8, 1803.8, 1796.2, 1797.2, 1797.5, 1803.2, , 1805.4, 1796.7, 1795.1, , 1794.5, 1801.7, 1803.5, 1806.5, , 1793.6, 1812.2, 1809.6, 1801.2, 1802.2, 1802.4, 1796.5, 1812.8, 1795.2, 1793.1, , 1799.9, , 1799.3, 1801.6, 1798.1, 1794.8, 1801.5, , 1799.2, 1798.5, 1795.7, 1792.9, 1801.8, 1803.4, 1798.9, 1801.5, , 1802.3, 1797.1, 1795.7, 1797.8, 1801.3, 1796.6, 1800.4, , 1803.4, 1805.7, 1800.6, 1801.4, 1801.8, 1798.7, 1805.9, 1794.8, 1800.6, 1795.7, 1811.2, 1798.3, 1792.4, 1801.8, 1805.6, 1806.9, 1798.4, 1797.9, 1795.4, 1801.2, , , , 1797.4, 1805.6, 1793.9, 1794.9, , 1795.3, 1801.7, 1799.7, 1805.1, 1799.5, 1796.9, 1797.9, 1795.7, 1794.4, 1796.4, 1797.1, 1798.4, 1804.3, 1800.2, 1799.1, , 1811.3, , 1798.8, 1804.9, 1792.8, 1792.4, 1791.4, 1794.7, 1796.6, 1793.8, 1799.2, 1794.7, 1799.9, 1790.1, 1795.1, 1799.6, 1795.7, 1796.5, 1800.1, 1801.6, 1797.2, 1790.5, , 1794.3, 1803.5, 1794.1, 1794.5, , 1801.8 };
    MtbColumn1.SetData(data1); MtbProj.ExecuteCommand("Capa C1 304; Lspec 1764; Uspec 1836; Pooled; AMR; UnBiased; OBiased; Toler 6; Within; Percent; Title \"Measure DUT key resistance: 1.01: L=1764 H=1836 (Ohm)\"; CStat."); Mtb.Graph MtbGraph = MtbProj.Commands.Item().Outputs.Item().Graph; MtbGraph.SaveAs("C:\\MyGraph" + DateTime.Now.ToString("yyyy-MM-dd HHmmss"), true, Mtb.MtbGraphFileTypes.GFPNGHighColor); MtbApp.Quit(); }

使用C#通过调用minitab的COM库自动化生成报表的更多相关文章

  1. vc6静态库的生成和调用

    转自vc6静态库的生成和调用 1.静态库的生成: 在vc6.0++中Ctrl+N选择Projects下的Win32 Static Library,Project name:SumLib,点击OK,下一 ...

  2. 关于C#调用非托管动态库方式的性能疑问

    最近的项目中,因为一些原因,需要C#调用非托管(这里为C++)的动态库.网上喜闻乐见的方式是采用静态(DllImport)方式进行调用.偶然在园子里看到可以用动态(LoadLibrary,GetPro ...

  3. C#调用C/C++动态库 封送结构体,结构体数组

    一. 结构体的传递 #define JNAAPI extern "C" __declspec(dllexport) // C方式导出函数 typedef struct { int ...

  4. golang调用c++的dll库文件

    最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一.DLL 的编制与具体的编程语言及编译器无关 dll分com的dll和动态dll,Com组件dll:不管是何种语言写的都可以 ...

  5. [置顶] android调用第三方库——第四篇——调用多个第三方库

    0:前言: 在前面三篇中我们介绍了android调用第三方库的形式,在这一篇中我们介绍调用多个第三方库的Android.mk的写法,由于其他三篇介绍的很详细,这里只给出Android.mk的内容. [ ...

  6. Android NDK开发及调用标准linux动态库.so文件

    源:Android NDK开发及调用标准linux动态库.so文件 预备知识及环境搭建 1.NDK(native development Kit)原生开发工具包,用来快速开发C.C++动态库,并能自动 ...

  7. 嵌入式开发之makefile---交叉编译静态库和动态库的生成和调用

    c和cpp 混合的动态库生成: $(LIBSO): $(COBJS) $(CPPOBJS) $(CPP) -shared -o $@ $^ $(LIBS) ////////////////////// ...

  8. python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码

    python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...

  9. android开发源代码分析--多个activity调用多个jni库的方法

    android开发源代码分析--多个activity调用多个jni库的方法 有时候,我们在开发android项目时会遇到须要调用多个native c/jni库文件,下面是本人以前实现过的方法,假设有知 ...

随机推荐

  1. Linux下安装、启动MySQL

    启动与停止 1.启动 MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可. [root@localhost mysql]# /etc/init.d/my ...

  2. TFS代码签入指导

    1. 如果文件没有被放入到TFS中, 那么它是不存在的. 这一点是最好被理解的, 如果你的代码没有被签入到代码管理中,那么就不可能被团队的其他人获取的得到. 具体如何将文件纳入到TFS中请参考 Pla ...

  3. SASS优化响应式断点管理

    前端开发whqet,csdn,王海庆,whqet,前端开发专家 原文:<Managing Responsive Breakpoints with Sass> 作者:Hugo Giraude ...

  4. getDefinitionByName与ApplicationDomain.getDefinition

    主swf 定义:MC,被加载swf 定义:MC.MC1 ①父SWF的应用程序域的新建子域 (默认方式)称其为应用程序域的继承 var app:ApplicationDomain=new Applica ...

  5. 实现控件WPF(4)----Grid控件实现六方格

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 利用Grid控件能很轻松帮助我们实现各种布局.上面就是一个通过Grid单元格 ...

  6. BZOJ 3505: [Cqoi2014]数三角形 数学

    3505: [Cqoi2014]数三角形 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  7. 杭电 3177 Crixalis&#39;s Equipment

    http://acm.hdu.edu.cn/showproblem.php? pid=3177 Crixalis's Equipment Time Limit: 2000/1000 MS (Java/ ...

  8. java的集合类【转】

    在JDK API中专门设计了一组类,这组类的功能就是实现各种各样方式的数据存储,这样一组专门用来存储其它对象的类,一般被称为对象容器类,简称容器类,这组类和接口的设计结构也被统称为集合框架(Colle ...

  9. ElasticSearch使用

    安装之前,请参考https://github.com/richardwilly98/elasticsearch-river-mongodb根据你的MongoDB版本号决定需要的elasticsearc ...

  10. ios--uitextfield动态限制输入的字数(解决方式)

    1.定义一个事件: -(IBAction)limitLength:(UITextField *)sender { bool isChinese;//推断当前输入法是否是中文 if ([[[UIText ...