`
mjm13
  • 浏览: 49737 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

C# 操作mpp文件

阅读更多
所需设置
   在工程中增加引用Microsoft Project 11.0 Object Library,该引用在com选项卡中。
注意    
    Microsoft Project 11.0 Object Library是本机安装Microsoft Project以后才能引用的。
   如果引用之后运行程序报错:
检索 COM 类工厂中 CLSID 为 {…………} 的组件时失败,原因是出现以下错误: …………。

请在控制面板-》管理工具-》组件服务-》计算机-》我的电脑-》DCom配置-》找到Microsoft Project Basic
之后单击属性打开此应用程序的属性对话框。
单击"安全"选项卡,分别在"启动和激活权限"和"访问权限"组中选中"自定义",
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop.MSProject;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            Program pro = new Program();
            pro.readMpp();
            // pro.callMacro();
            //pro.createMpp();
        }
//调用mpp中定义的宏
        public void callMacro()
        {
            Object missing = Type.Missing;
            ApplicationClass prj = new ApplicationClass();
//打开mpp文件
            prj.FileOpen("C:/Documents and Settings/Administrator/My Documents/test.mpp",
                false, missing, missing, missing, missing, missing, missing, missing,
                missing, missing, PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing);
//调用名称为testMacro
            prj.Macro("testMacro");
//关闭,但不保存mpp
            prj.FileClose(PjSaveType.pjDoNotSave, false);
            prj.Quit(PjSaveType.pjDoNotSave);
        }

        public void readMpp()
        {
            Object missing = Type.Missing;
            ApplicationClass prj = new ApplicationClass();
            prj.FileOpen("D:/test.mpp",
                false, missing, missing, missing, missing, missing, missing, missing,
                missing, missing, PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing);
            foreach (Project proj in prj.Projects)
            {
                foreach (Task task in proj.Tasks)
                {
                    System.Console.WriteLine("|" + task.Name + "|" + task.UniqueID + "|" + task.ResourceNames + "|");
                }
            }
            prj.FileClose(PjSaveType.pjSave, false);
            prj.Quit(PjSaveType.pjSave);
            System.Console.Read();
        }

        public void createMpp()
        {
            Object missing = Type.Missing;
            ApplicationClass prj = new ApplicationClass();
            PjFileFormat format = PjFileFormat.pjMPP;//format定义   
            prj.Visible = true;
            prj.FileNew(Type.Missing, Type.Missing, Type.Missing, false);
            Project myProject = prj.ActiveProject;
            Task task = null;
            task = myProject.Tasks.Add("zhi", 1);
            task.Start = "2008-8-1";
            task.Finish = "2008-8-18";
            task.SetField(PjField.pjTaskNotes, "Task1");

            task = null;
            task = myProject.Tasks.Add("wenzhixing", 2);
            task.Start = "2008-8-8";
            task.Finish = "2008-8-28";
            task.ActualStart = "2008-9-8 8:00";
            task.ActualFinish = "2008-9-28 17:00";
            task.OutlineLevel = 2;
            task.SetField(PjField.pjTaskResourceNames, "wenzhi");

            task = null;
            task = myProject.Tasks.Add("wen", 3);
            task.Start = "2008-8-11";
            task.Finish = "2008-8-18";
            task.SetField(PjField.pjTaskNotes, "Task2");
            task.Notes += "hehe";
            task.OutlineLevel = 1;

            task = null;
            task = myProject.Tasks.Add("wen", 4);
            task.Start = "2008-8-18";
            task.Finish = "2008-8-28";
            task.OutlineLevel = 2;
            task.SetField(PjField.pjTaskResourceNames, "wenzhi");

            prj.FileSaveAs("C:/Documents and Settings/Administrator/My Documents/mjm.mpp",
                format, missing, false, missing, missing, missing, missing,
                missing, missing, PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing, missing, missing, missing, missing);
        }
    }
}

分享到:
评论

相关推荐

    从MS Project 导入内容 (C#)

    MS Project 文件导入与操作相关知识点 MS Project 是 Microsoft 公司推出的项目管理软件,它提供了强大的项目计划、执行和监控功能。随着项目管理的日益复杂化,使用 MS Project 来管理项目变得越来越普遍。然而,...

    mpxj解析ms project+生成xml文件

    2. **打开.mpp文件**:使用MPXJ库提供的`ProjectFile`类,你可以加载和打开.mpp文件。例如: ```java ProjectFile project = ProjectFile.getInstance(new File("path_to_your_file.mpp")); ``` 3. **遍历项目...

    对Micsoft Project 文件进行时序翻译

    本文将深入探讨如何使用C#进行.MPP文件的时序翻译,以及如何实现按开始执行时间排序的指令。 首先,要解析.MPP文件,我们需要理解其内部结构和数据存储方式。Microsoft Project的.MPP文件实际上是一种基于二进制的...

    C#PPI协议源代码

    - 开发者需要理解PPI协议的命令集,如读取、写入、循环数据交换(RME)和多点数据广播(MPP)等操作。 2. **C#与S7-200 PLC通信步骤** - 创建C#项目:使用Visual Studio或其他C#开发环境创建一个新的控制台或类库...

    C#写的画甘特图的工具

    工具可能需要导入和导出甘特图数据,常见的格式有XML、JSON或专用的项目管理文件格式(如MS Project的.MPP文件)。这需要实现文件读写和数据序列化/反序列化功能。 10. **测试与优化** 为了确保甘特图工具的稳定...

    读取和写入Project2010文件

    本文将详细探讨如何使用C#编程语言在Visual Studio 2010(VS2010)环境下实现对Project 2010文件的读取和写入操作。 首先,要进行Project 2010文件的读取和写入,我们需要引用Microsoft.Office.Interop.MSProject库...

    Aspose.Tasks.dll v1.6.3.0 无限制 无水印

    在实际开发中,例如,你可以创建一个项目管理工具,用户可以直接导入MPP文件,查看任务列表,调整任务和资源,然后导出更新后的项目文件。或者,你也可以构建一个服务,自动分析项目文件,生成进度报告,甚至进行...

    .net 不安装project文件,实现project导入导出组件

    MPXJ是一个流行的开源库,专门用于读写Microsoft Project文件,包括.MPP和.MPT格式。这个库最初是用Java编写的,但它也提供了对.NET平台的支持,因此在我们的场景下,MPXJ可以作为一个理想的解决方案。以下是关于...

    ASPOSEdll.zip

    总之,Aspose DLLs是C#开发中的强大工具,尤其对于需要处理各种文件格式的应用来说,它们提供了高效且易于使用的接口,简化了文件操作和格式转换的复杂性。通过深入学习和应用这些库,开发者可以提升应用程序的功能...

    基于细菌觅食算法的MPPT算法,可以用来做课设,方便实用BG-PSO.zip

    在IT领域,优化算法是解决复杂问题的一种有效手段,特别是在电力系统、通信工程以及...结合C#编程,该项目提供了一个易于理解和操作的平台,适用于教学和研究,帮助学生和工程师更好地理解和应用优化算法解决实际问题。

    npgsql.data.dll,基于.net framework 3.5

    它包含了Common Language Runtime(CLR)和类库,支持多种编程语言,如C#、VB.NET、C++等。Npgsql.data.dll作为.NET Framework 3.5的组件,可以在该框架下无缝集成到各种.NET应用程序中。 **Npgsql.data.dll的使用*...

    sql server 2008 native client

    2. 支持行列式数据库(MPP)架构:通过并行查询处理,提高了大规模数据仓库的性能。 3. 改进了对XML数据类型的支持:提供了更高效的数据检索和更新操作。 4. 支持透明数据加密(TDE):数据在存储时自动加密,增强了...

Global site tag (gtag.js) - Google Analytics