c#操作.mpp文件
原文地址:http://mjm13.iteye.com/blog/532404
所需设置
在工程中增加引用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", );
task.Start = "2008-8-1";
task.Finish = "2008-8-18";
task.SetField(PjField.pjTaskNotes, "Task1"); task = null;
task = myProject.Tasks.Add("wenzhixing", );
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 = ;
task.SetField(PjField.pjTaskResourceNames, "wenzhi"); task = null;
task = myProject.Tasks.Add("wen", );
task.Start = "2008-8-11";
task.Finish = "2008-8-18";
task.SetField(PjField.pjTaskNotes, "Task2");
task.Notes += "hehe";
task.OutlineLevel = ; task = null;
task = myProject.Tasks.Add("wen", );
task.Start = "2008-8-18";
task.Finish = "2008-8-28";
task.OutlineLevel = ;
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);
}
}
}
c#操作.mpp文件的更多相关文章
- VC操作MPP文件
1.背景简介 因需要对Office系列进行程序操作,特需要使用COM编程. Microsoft Project生成进度计划,office家族软件,文件后缀为.mpp. 具体信息见维基百科http:// ...
- VS c# 操作 Microsoft Project mpp 文件 并遍历边关系
网上找到资料提供了遍历.mpp文件中任务的功能: http://blog.csdn.net/gxf36/article/details/5253792 ======================== ...
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- php多线程操作同一文件-待续
同意文件操作同意文件的问题在于逻辑有些地方不合适,如果多个线程同时写入,在不加锁的情况下,可能导致得到结果不如意,为了安全,和脏读(数据库的词),应该使用排他锁,这就意味着每次只能被一个线程操作.其他 ...
- mpp文件转换成jpg图片,可以用pdf文件做中转站
用project软件做了一个表,发现不能转换成图片,先把mpp文件转换成pdf文件,然后用PS打开pdf文件,存储为jpg格式就行了
- Java生成和操作Excel文件(转载)
Java生成和操作Excel文件 JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...
- .NET相关操作其他文件的小程序(系列文章)
平时自诩为使用.NET做开发,但是实际上从一开始学习C#直到现在除了做个几个不登大雅之堂的小网站,做过几个winform程序和几个控制台应用程序,真的没有踏踏实实地用.NET开发过某些属于自己的东西. ...
- Java生成和操作Excel文件
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...
- 在脚本中操作plist文件
终端输入: /usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" /Users/achen/Desktop/testBundl ...
随机推荐
- 跟着鬼哥学so改动,一,准备篇
图/文 听鬼哥说故事 闲话少说,so的改动,重要性大家都知道,这里从头编写so文件,分析so文件,改动so文件,打算做一个系列的教程,当然,主要是看时间同意. android的sdk配置以及ndk环境 ...
- spring 整合redis
用的是最新的jedis-2.6.2.jar这个包,这个和以前的有点不同.还需要添加spring-data-redis-1.2.1.RELEASE.jar和commons-pool2-2.3.jar. ...
- 北风风hadoop课程体系
课程一.基于Linux操作系统平台下的Java语言开发(20课时)课程简介本套课程主要介绍了Linux系统下的Java环境搭建及最基础的Java语法知识.学习Linux操作系统下Java语言开发的好处 ...
- 486E - LIS of Sequence(LIS)
题意:给一个长度为n的序列.问每一个数关于序列的LIS(longest increasing subsequence)是什么角色. 这里分了三种: 1.此数没有出如今随意一条LIS中 2.此数出如今至 ...
- TEXT文本编辑框2
Result: When you double clicks on the TextEdit control nothing happens, since the flow-logic of the ...
- Servlet的学习之ServletContext(1)
本篇来介绍Servlet中非常重要的对象,如ServletConfig类和ServletContext类,尤其是ServletContext类中的一些方法,本篇先讲述一部分,在下一篇中继续补充. 在对 ...
- 在界面线程不能使用Sleep和WaitForSingleObject之类的函数, 使用 MsgWaitForMultipleObjects
http://blog.csdn.net/wishfly/article/details/3726985 你在主线程用了WaitForSingleObject,导致了消息循环的阻塞,界面假死. 然后在 ...
- json转换成list map集合
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Set; i ...
- hdu 2147 SG函数打表(手写也可以) 找规律
kiki's game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/1000 K (Java/Others) Total ...
- COCOS2D中对精灵的操作、对图片的各种操作
内容简要: 1.初始化 2.创建无图的精灵 3.设置精灵贴图大小 4.添加入层中 5.对精灵进行缩放 6.对精灵宽或高进行缩放 7.旋转精灵 8.设置精灵透明度 9.精灵的镜像反转 10.设 ...