VS c# 操作 Microsoft Project mpp 文件 并遍历边关系
网上找到资料提供了遍历.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;
}
}
}
VS c# 操作 Microsoft Project mpp 文件 并遍历边关系的更多相关文章
- VC操作MPP文件
1.背景简介 因需要对Office系列进行程序操作,特需要使用COM编程. Microsoft Project生成进度计划,office家族软件,文件后缀为.mpp. 具体信息见维基百科http:// ...
- c#操作.mpp文件
原文地址:http://mjm13.iteye.com/blog/532404 所需设置 在工程中增加引用Microsoft Project 11.0 Object Library,该引用在co ...
- C# 打开mpp文件(Microsoft object)问题总结
有需求就有解决方案,早上还没有听说过什么是 mpp 文件,下午已经能成功的将功能实现,这难道就是程序员的职业素养?哈哈哈哈 从网上找了很多方法,最后自己找到一个十分简单的打开 mpp 文件的方法: p ...
- java操作office和pdf文件java读取word,excel和pdf文档内容
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- Java操作Microsoft Word之jacob
转自: 现在我们一起来看看,用Java如何操作Microsoft Word. jacob,官网是http://danadler.com/jacob 这是一个开源的工具.最新版本1.7 官方 ...
- mpp文件转换成jpg图片,可以用pdf文件做中转站
用project软件做了一个表,发现不能转换成图片,先把mpp文件转换成pdf文件,然后用PS打开pdf文件,存储为jpg格式就行了
- 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作
原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载 ...
- 【Egret】实现web页面操作PC端本地文件操作
Egret 实现web页面操作PC端本地文件操作: http://edn.egret.com/cn/book/page/pid/181 //------------------------------ ...
- php解析mpp文件中的多级任务
获取层级的project任务 参考 启动javabridge java -jar JavaBridge.jar SERVLET_LOCAL:8089 1.读取mpp文件 $file_path = & ...
随机推荐
- NumPy基础知识图谱
所有内容整理自<利用Python进行数据分析>,使用MindMaster Pro 7.3制作,emmx格式,源文件已经上传Github,需要的同学转左上角自行下载.该图谱只是NumPy的基 ...
- Flutter 1.17 新 Material motion 规范的预构建动画
老孟导读:在 Flutter 1.17 发布大会上,Flutter 团队还发布了新的 Animations 软件包,该软件包提供了实现新的 Material motion 规范的预构建动画. 软件包 ...
- class文件的基本结构及proxy源码分析二
前文地址:https://www.cnblogs.com/tera/p/13267630.html 本系列文章主要是博主在学习spring aop的过程中了解到其使用了java动态代理,本着究根问底的 ...
- 痞子衡嵌入式:其实i.MXRT1050,1020,1015系列ROM也提供了FlexSPI driver API
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1050/1020/1015系列ROM中的FlexSPI驱动API使用. 今天痞子衡去4S店给爱车做保养了,保养一次要等两小 ...
- Centos7:python 安装。yum安装软件提示 cannot find a valid baseurl for repobase7x86_64
方法一. 1.打开 vi /etc/sysconfig/network-scripts/ifcfg-enp4s0(每个机子都可能不一样,但格式会是“ifcfg-e...”).但内容包含: < ...
- tensorflw-gpu 运行 。py程序出现gpu不匹配的问题
安装好了tensorflow-gpu版本,然后程序中写好了 with tf.device('/gpu:0'): 但是python3 .py程序时还是有错误. 报错为: 2018-04-24 12: ...
- Vue中使用websocket
<template> <div class="test">websocket demo</div></template> < ...
- Java常用类-Object类
一.java.lang.Object类 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Obj ...
- Burp Suite Extender Module - 扩展模块
模块功能: 在扩展模块可以通过使用自定义代码,进行Burp 的自定义操作. 1. Burp Extensions页面 2. BApp Store中可以购买和安装别人写好的扩展功能 3. 在APIs界面 ...
- Ethical Hacking - NETWORK PENETRATION TESTING(23)
Detecting ARP Posionning Attacks ARP main security issues: 1. Each ARP requests/response is trusted. ...