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 ...
随机推荐
- nest expression & Pyparsing
http://pyparsing.wikispaces.com/ http://bbs.csdn.net/topics/330052586 C++ boost "<([^<> ...
- 火炬之光模型导出(Unity载入火炬之光的模型)
先说明几点.导出方案可行,測试通过. python和blender的版本号一定要用下文中所说的.新的Python或者是新的Blender版本号都无法完美导入. 导入导出脚本能够选择 (http://c ...
- 【OpenCV】漫水填充
漫水填充:也就是用一定颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果;漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区 ...
- 让程序在崩溃时体面的退出之Dump文件
在我的那篇<让程序在崩溃时体面的退出之CallStack>中提供了一个在程序崩溃时得到CallStack的方法.但是要想得到CallStack,必须有pdb文件的支持.但 ...
- 遇到Audio/Speech相关问题,如何抓取log
[DESCRIPTION] 遇到Audio/Speech相关问题时,经常需要抓取相关log信息,总结抓取方法如下 [SOLUTION] 1. 通话声音相关的问题: Case 1: 通话中某一 ...
- MFC界面相关(彩色工具栏)
MFC工具栏控件 创建工具栏步骤: (1)在Resource View中插入新toolbar (2)在toolbar上双击增加按钮,更改ID为ID_BUTTON,编译后在resource.h中即可看到 ...
- 快速排序的时间复杂度nlogn是如何推导的??
本文以快速排序为例,推导了快排的时间复杂度nlogn是如何得来的,其它算法与其类似. 对数据Data = { x1, x2... xn }: T(n)是QuickSort(n)消耗的时间: P(n)是 ...
- 流式计算-Jstorm提交Topology过程(上)
Topology是Jstorm对有向无环图的抽象,内部封装了数据来源spout和数据处理单元bolt,以及spout和bolt.bolt和bolt之间的关系.它能够被提交到Jstorm集群. 本文以J ...
- uploadfiy使用
动态加参数:$("#file_upload").uploadify("settings", "formData", { knowledgeI ...
- eclipse Maven plugin 配置
1. eclipse -> help -> marketpalce -> search 在输入框中输入Maven,回车. 在搜索结果列表中往下拉几个安装 Maven Integrat ...