zoukankan      html  css  js  c++  java
  • C# 打开mpp文件(Microsoft object)问题总结

    有需求就有解决方案,早上还没有听说过什么是 mpp 文件,下午已经能成功的将功能实现,这难道就是程序员的职业素养?哈哈哈哈

    从网上找了很多方法,最后自己找到一个十分简单的打开 mpp 文件的方法:

            public void readMpp()
            {
                Object missing = Type.Missing;
                ApplicationClass prj = new ApplicationClass();
                prj.FileOpen("C:/Users/a001/Desktop/项目1.mpp",
                    false, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing);
                System.Threading.Thread.Sleep(2000);//睡眠两秒
                string strmpp = "";
                foreach (Project proj in prj.Projects)
                {
                    foreach (Microsoft.Office.Interop.MSProject.Task task in proj.Tasks)
                    {
                        if (task == null)
                            continue;
                        //strmpp += "任务名称:" + task.Name + "," + task.UniqueID + ",资源名称:" + task.ResourceNames + "
    ";//用ajax来请求的时候,此格式非json格式,会报错
                        strmpp += "任务名称:" + task.Name + "," + task.UniqueID + ",资源名称:" + task.ResourceNames;//正确方法
                    }
                }
                prj.FileClose(PjSaveType.pjSave, false);//关闭
                prj.Quit(PjSaveType.pjSave);//关闭
    
                Response.Write(string.Format("{{ "errorcode": {0}, "errormessage": "{1}" }}", 1000, strmpp));
            }

    注意:

    1、使用C#的这种方法打开 mpp 文件时,电脑上必须安装 Microsoft object 这个软件(在测试时本人打开线程观测结果:会先将 Microsoft object 软件打开,而后关闭)

    问题:

    1、ApplicationClass 提示无法嵌入互操作类型,请改用使用的接口,如下:

     解决方案是:将引用 Microsoft.Office.Interop.MSProject 的属性中的 “嵌入互操作类型” 改为false  如下:

     2、上述代码中提到了要线程睡眠两秒,是因为我的 Microsoft object 软件未激活,会提示我是否激活,将这个会话框关闭才能读取到 mpp 文件中的数据,否则将会报错(睡眠两秒的意义就在于给我两秒钟的时间我去关闭这个会话窗,再说一点,激活是要 rmb 的,哈哈)

    如有问题,请留言或及时联系本人。

  • 相关阅读:
    rest framework 认证 权限 频率
    rest framework 视图,路由
    rest framework 序列化
    10.3 Vue 路由系统
    10.4 Vue 父子传值
    10.2 Vue 环境安装
    10.1 ES6 的新增特性以及简单语法
    Django 跨域请求处理
    20190827 On Java8 第十四章 流式编程
    20190825 On Java8 第十三章 函数式编程
  • 原文地址:https://www.cnblogs.com/ZbsCc/p/11639917.html
Copyright © 2011-2022 走看看