原文地址: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文件的更多相关文章

  1. VC操作MPP文件

    1.背景简介 因需要对Office系列进行程序操作,特需要使用COM编程. Microsoft Project生成进度计划,office家族软件,文件后缀为.mpp. 具体信息见维基百科http:// ...

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

    网上找到资料提供了遍历.mpp文件中任务的功能: http://blog.csdn.net/gxf36/article/details/5253792 ======================== ...

  3. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  4. php多线程操作同一文件-待续

    同意文件操作同意文件的问题在于逻辑有些地方不合适,如果多个线程同时写入,在不加锁的情况下,可能导致得到结果不如意,为了安全,和脏读(数据库的词),应该使用排他锁,这就意味着每次只能被一个线程操作.其他 ...

  5. mpp文件转换成jpg图片,可以用pdf文件做中转站

    用project软件做了一个表,发现不能转换成图片,先把mpp文件转换成pdf文件,然后用PS打开pdf文件,存储为jpg格式就行了

  6. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  7. .NET相关操作其他文件的小程序(系列文章)

    平时自诩为使用.NET做开发,但是实际上从一开始学习C#直到现在除了做个几个不登大雅之堂的小网站,做过几个winform程序和几个控制台应用程序,真的没有踏踏实实地用.NET开发过某些属于自己的东西. ...

  8. Java生成和操作Excel文件

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  9. 在脚本中操作plist文件

    终端输入: /usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" /Users/achen/Desktop/testBundl ...

随机推荐

  1. 来推荐个免费的PPT演示工具--ZohoShowTime

    事实上这个不算新产品了,这次是做了一些大的改进.上次在Zoho的全球用户大会上,全程演讲都是用的这个工具.Zoho这点非常好啊.自己的产品自己带头用.个人认为它最大的用处就是.离得远的观众能够在自己的 ...

  2. linux shell脚本:在脚本中实现读取键盘输入,根据输入判断下一步的分支

    echo please input “runbip” to run bip. variableName="null" while [ $variableName != " ...

  3. 基于visual Studio2013解决C语言竞赛题之1059最大平台

       题目 解决代码及点评 /* 功能:编写求最大平台问题的程序. 有n个整数a1,a2, ... an, 若满足a1≤a2≤ ... ≤ an , 则认为在这n个数中有最大平台.在这种情 ...

  4. css3 animation 参数详解

    animation: name 2s ease 0s 1 both有人知道这后面的参数都代表什么意思吗 name 就是你创建动画的名称 2S表示的时长 ease表示运动效果 0S表示延迟时间 1表示的 ...

  5. winform基础——数据访问及几个案例

    数据访问分为三个部分:(1)创建链接(2)创建与执行命令(3)读取或准备相关数据 一,需要引用的命名空间 using data: using data.SqlClient; 二,创建与数据库的链接—— ...

  6. C++晋升之std中vector的实现原理(标准模板动态库中矢量的实现原理)

    我们实现的数据结构是为了解决在执行过程中动态的开辟空间使用(比如我们不停的输入,输入的多少我们不确定) 假设当你看到这篇文章的话,就当作是零食咀嚼,营养没有有BUG,能够直接看我博客中文章:CPU对内 ...

  7. 中介者模式 C++ 实现

    #include<iostream> #include<string> #include<vector> #include<cstdlib> using ...

  8. 与众不同 windows phone (8) - Tile(磁贴)

    原文:与众不同 windows phone (8) - Tile(磁贴) [索引页][源码下载] 与众不同 windows phone (8) - Tile(磁贴) 作者:webabcd介绍与众不同 ...

  9. hdu1427之速算24点

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  10. xvfb 初步探究

    有时候我们不关注程序是否有界面(比如自动化测试),只要程序在运行就可以了 很感谢 xvfb 这个工具给我们提供了相关的功能 比如在没有 X server 的机器上运行 gedit, 可以用下面的命令 ...