• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# 打开mpp文件(Microsoft object)问题总结

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

有需求就有解决方案,早上还没有听说过什么是 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 + "\r\n";//用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 的,哈哈)

 

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# 泛型编程之泛型类、泛型方法、泛型约束发布时间:2022-07-13
下一篇:
C#中的Attribute发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap