`
tanliwei
  • 浏览: 49421 次
  • 性别: Icon_minigender_1
  • 来自: 中国
社区版块
存档分类
最新评论

VS c# 操作 Microsoft Project mpp 文件 并遍历边关系

c# 
阅读更多

 

网上找到资料提供了遍历.mpp文件中任务的功能:

http://blog.csdn.net/gxf36/article/details/5253792

=========================================================

但未提供遍历任务边关系(依赖关系)的功能。尝试并经过测试形成如下代码:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.MSProject;

namespace JDPrj_Demo_DataTransfm
{
    class MppIO
    {
         /// <summary>
        /// 获取.mpp文件中所有依赖关系
        /// </summary>
        /// <param name="filepath"></param>
        /// <returns></returns>
        public List<Edge> getEdges(string filepath)
        {
            List<Edge> list = new List<Edge>();
            Object missing = Type.Missing;
            ApplicationClass prj = new ApplicationClass();
            prj.FileOpen(filepath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing);
            Edge edge = null;
            int graph = new Random().Next(100000);
            //遍历所有工程
            foreach (Project proj in prj.Projects)
            {
                //遍历所有任务
                foreach (Microsoft.Office.Interop.MSProject.Task task in proj.Tasks)
                {
                    //遍历任务的依赖关系(边关系)
                    foreach (TaskDependency dep in task.TaskDependencies)
                    {
                        //.mpp任务采用双向链表的方式存储边关系
                        //只取边的起始任务为当前任务的边,去重
                        if (dep.From.Index == task.Index)
                        {
                            edge = new Edge(graph, dep.From.Index, dep.To.Index, 0);
                            list.Add(edge);
                            //根据需要只需去双向链表的一条边,去重
                            break;
                        }
                    }
                }
            }
            return list;
        }

    }

    /// <summary>
    /// 边,任务与任务间,节点与节点间的边
    /// </summary>
    public class Edge
    {
        public int graph_id = 0;    //图编号
        public int start_node = 0;  //开始节点
        public int end_node = 0;    //结束节点
        public int weight = 0;      //边权重
        public Edge() { }
        public Edge(int graph_id, int start_node, int end_node, int weight)
        {
            this.graph_id = graph_id;
            this.start_node = start_node;
            this.end_node = end_node;
            this.weight = weight;
        }
    }
}

 

 

 

分享到:
评论

相关推荐

    Project软件实用模板(MPP文件)11个场景模板.zip

    这些模板的特点在于,它们都是以MPP文件格式存储,这是Project软件的原生文件格式,包含丰富的任务、资源、时间线和依赖关系信息,能够直观地展示项目全貌。使用这些模板,用户可以快速创建项目计划,调整任务和资源...

    project mpp文件

    《Microsoft Project MPP文件详解与应用指南》 在项目管理领域,Microsoft Project是一款不可或缺的工具,它通过MPP(Microsoft Project Plan)文件格式,帮助用户有效地规划、组织和跟踪项目进度。本文将深入探讨...

    从MS Project 导入内容 (C#)

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

    通过java导入读取微软项目管理文件(配套代码和导入project文件)

    本篇文章将深入探讨如何使用Java来导入并读取微软的Project文件,同时也提供了一套相关的代码示例。 首先,我们要知道微软的Project文件通常是以.mpp格式存储的,这些文件包含了项目的详细信息,如任务、资源、时间...

    java读取mpp文件

    在IT行业中,mpp文件通常指的是Microsoft Project的项目文件,它用于存储项目计划、任务、资源、时间线等信息。在Java环境下,如果需要处理这样的文件,我们通常会借助于第三方库,例如`mpxj`。`mpxj`是一个开源的...

    ms+project模板(mpp文件).zip

    ms+project模板(mpp文件),该资源供自己使用,请大家不要盲目下载!ms+project模板(mpp文件),该资源供自己使用,请大家不要盲目下载!ms+project模板(mpp文件),该资源供自己使用,请大家不要盲目下载!

    java读写mpp文件的开源包

    在Java开发中,有时我们需要处理Microsoft Project(MPP)文件,例如进行项目管理软件的数据导入导出。MPP文件是Microsoft Project用来存储项目计划、任务、资源和时间表等信息的标准格式。为了在Java环境中操作这些...

    Project 2007 项目管理模板 MPP格式 41个打包

    MPP是Microsoft Project的默认文件格式,用于存储项目的所有详细信息,包括任务、资源、时间线和预算等。 1. **MPP文件格式**: MPP文件是项目计划的核心,包含了项目的所有元素,如任务、资源、依赖关系、进度表和...

    Java解析Project_mpp文件.docx

    Java解析Project_mpp文件.docx

    com读取mpp文件

    在IT行业中,有时我们需要处理各种类型的文件,例如项目管理中常用的Microsoft Project(MPP)文件。在这种情况下,标题“com读取mpp文件”指的是利用组件对象模型(Component Object Model,简称COM)接口来读取MPP...

    MPP文件 阅读器

    MPP文件阅读器是一种专门用来打开、查看和打印Microsoft Project创建的项目管理文件的应用程序。在IT领域,项目管理是至关重要的,而MPP文件格式是Microsoft Project的标准文件格式,用于存储项目计划、任务分配、...

    .net 读取 project mpp 项目文件

    .net 读取 project mpp 项目文件 欢迎访问http://121.18.78.216

    JavaMSProject导出.rar

    java生成project形式的xml、mpp 将xml形式的Project文件转成 mpp 走过的弯路 1.Project 直接导出 mpp文件,没有办法自定义列。 2.jacob 导出mpp文件 jawin.dll只支持32位。 3.Aspose-Tasks-Java不收费的版本只能导出...

    MS Project 项目模板(MPP文件)

    MS Project 项目模板文件,包括企业信息化项目群、优化类项目计划模版、共享资源库、办公自动化项目、某机构项目管理实施计划、视频保安系统项目、邮件系统合并项目、项目变更案例(变更前)、项目变更案例(变更后)、...

    Steelray Project Viewer 安装软件(打开.mpp文件)

    在项目管理领域,Microsoft Project创建的.MPP文件是广泛使用的项目计划和跟踪工具。然而,不是每个人都拥有或熟悉Microsoft Project,这时就需要像Steelray Project Viewer这样的第三方软件来帮助我们查看和分析...

    MS Project mpp 转Excel

    通过Excel的宏,用于mpp格式转为Excel格式。并能在Excel中根据进展情况自动显示日期单位的甘特图。

    ProjectViewer_365_PC_opdown_mpp_mpp文件_

    标题中的“ProjectViewer_365_PC_opdown_mpp_mpp文件_”表明这是一个与Microsoft Project Viewer相关的软件,特别强调了它支持打开.MPP文件。MPP文件是Microsoft Project的标准项目文件格式,用于存储项目计划、任务...

    MSProject文件导入导出

    在.NET框架中,可以通过`Microsoft.Office.Interop.MSProject`命名空间来操作MSProject文件。这部分涉及到MSProject文件的基本读写功能。 #### 1.1 打开MSProject文件 通过`ApplicationClass`对象可以创建一个新的...

    解析mpp文件的jar包

    在Java开发环境中,有时我们需要处理特定格式的文件,如Microsoft Project的MPP文件。MPP文件主要用于项目管理,存储任务、资源、时间线等详细信息。为了在Java中解析这种文件,开发者通常会借助第三方库。本文将...

Global site tag (gtag.js) - Google Analytics