`
whyang
  • 浏览: 4059 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

MPJX2.1生成微软Project MPX文件

阅读更多
package mpx;

import java.util.Locale;

import net.sf.mpxj.DateRange;
import net.sf.mpxj.Day;
import net.sf.mpxj.Duration;
import net.sf.mpxj.FieldType;
import net.sf.mpxj.ProjectCalendar;
import net.sf.mpxj.ProjectCalendarHours;
import net.sf.mpxj.ProjectFile;
import net.sf.mpxj.ProjectHeader;
import net.sf.mpxj.Relation;
import net.sf.mpxj.RelationType;
import net.sf.mpxj.Resource;
import net.sf.mpxj.Task;
import net.sf.mpxj.TaskField;
import net.sf.mpxj.TimeUnit;
import net.sf.mpxj.mpx.MPXWriter;
import net.sf.mpxj.utility.NumberUtility;

public class CreateMPX
{
	public CreateMPX()
	{
	}

	public static void main(String args[])
	{
		try
		{
			create("d:\\output.MPX");
		}
		catch (Exception ex)
		{
			ex.printStackTrace(System.out);
		}
	}

	
	private static void create(String filename) throws Exception
	{
		ProjectFile file =new ProjectFile();
					
		Task task1 = file.addTask();
		task1.setName("task1");
		task1.setUniqueID(1);
		task1.setID(1);
		task1.setOutlineLevel(task0.getOutlineLevel()+1);
		
		Task task11 = task1.addTask();
		task11.setName("task1-1");
		task11.setDuration(Duration.getInstance(6, TimeUnit.DAYS));
		task11.setStart(java.sql.Date.valueOf("2008-8-21"));
		task11.setFinish(java.sql.Date.valueOf("2008-8-26"));
		task11.setPercentageComplete(NumberUtility.getDouble(90D));
		task11.setUniqueID(2);
		task11.setID(2);
		task11.setResourceNames("one");
				
		Task task12 = task1.addTask();
		task12.setName("task12");
		task12.setDuration(Duration.getInstance(5, TimeUnit.DAYS));
		task12.setStart(java.sql.Date.valueOf("2008-8-27"));
		task12.setFinish(java.sql.Date.valueOf("2008-8-31"));
		task12.setResourceNames("two");
		task12.setUniqueID(3);
		task12.setID(3);
			
                  //前置关系
		Relation r=task12.addPredecessor(task11);	

	         r.setType(RelationType.FINISH_START);
	         r.setTaskUniqueID(task11.getUniqueID());
		
		ProjectCalendar pc=file.addBaseCalendar();
		
                  //设置工作日历 这里设的周1-7全部工作,呵呵 如不设默认为5天工作制
		pc.setName("压榨民工");
		pc.setWorkingDay(Day.SUNDAY, true);
		pc.setWorkingDay(Day.MONDAY, true);
		pc.setWorkingDay(Day.TUESDAY, true);
		pc.setWorkingDay(Day.WEDNESDAY, true);
		pc.setWorkingDay(Day.THURSDAY, true);
		pc.setWorkingDay(Day.FRIDAY, true);
		pc.setWorkingDay(Day.SATURDAY, true);
		
		ProjectCalendarHours h1=pc.addCalendarHours(Day.SUNDAY);
		h1.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START1, ProjectCalendar.DEFAULT_END1));
	    h1.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START2, ProjectCalendar.DEFAULT_END2));
	    
	    ProjectCalendarHours h2=pc.addCalendarHours(Day.MONDAY);
		h2.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START1, ProjectCalendar.DEFAULT_END1));
	    h2.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START2, ProjectCalendar.DEFAULT_END2));
	    
	    ProjectCalendarHours h3=pc.addCalendarHours(Day.TUESDAY);
		h3.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START1, ProjectCalendar.DEFAULT_END1));
	    h3.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START2, ProjectCalendar.DEFAULT_END2));
	    
	    ProjectCalendarHours h4=pc.addCalendarHours(Day.WEDNESDAY);
		h4.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START1, ProjectCalendar.DEFAULT_END1));
	    h4.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START2, ProjectCalendar.DEFAULT_END2));
	    
	    ProjectCalendarHours h5=pc.addCalendarHours(Day.THURSDAY);
		h5.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START1, ProjectCalendar.DEFAULT_END1));
	    h5.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START2, ProjectCalendar.DEFAULT_END2));
	    
	    ProjectCalendarHours h6=pc.addCalendarHours(Day.FRIDAY);
		h6.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START1, ProjectCalendar.DEFAULT_END1));
	    h6.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START2, ProjectCalendar.DEFAULT_END2));
	    
	    ProjectCalendarHours h7=pc.addCalendarHours(Day.SATURDAY);
		h7.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START1, ProjectCalendar.DEFAULT_END1));
	    h7.addDateRange(new DateRange (ProjectCalendar.DEFAULT_START2, ProjectCalendar.DEFAULT_END2));
		
	    
	    ProjectHeader ph=file.getProjectHeader();
	    ph.setCalendarName(pc.getName());
	    	    
	    MPXWriter writer = new MPXWriter();
             //设置中文
	    writer.setLocale(Locale.CHINESE);
	    writer.write(file, filename);
	}
}

分享到:
评论
1 楼 mjm13 2009-07-09  
请问要怎么处理有拆分的任务啊?。

相关推荐

    java生成mpx文件

    使用java的mpxj的jar包来生成mpx的project文件

    mpxj解析ms project+生成xml文件

    MPXJ(Microsoft Project eXtended Java Library)是一个开源Java库,专门设计用来与Microsoft Project文件进行交互。它支持Microsoft Project 2000到2019的所有版本,能够读取、修改和创建.mpp文件,使得开发者可以...

    JavaMSProject导出.rar

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

    压力传感器mpx4115

    至于“压力传感器mpx4115”文件,这可能是MPX4115的datasheet或者与之相关的C库文件,其中包含了传感器的电气特性、接口信息、操作指南等重要信息。在实际项目中,开发者会参考这些资料来正确地连接和使用传感器。 ...

    基于MPX4105芯片的数字气压计设计.pdf

    ##### 2.1 气压传感器——MPX4105 MPX4105是一种高性能的压力传感芯片,由美国摩托罗拉公司研发。它具有良好的线性输出特性,能够将所受的气压变化转化为与之成正比的模拟电压输出。具体来说,MPX4105具备以下几个...

    MPX10DP压力传感器检测电路设计

    ##### 2.1 MPX10DP简单介绍 - **基本概念**:MPX10DP是一种将压力转换为电压信号的硅半导体传感器。与其他类型的传感器相比,它具备体积小、重量轻、成本低以及性能稳定等优势。 - **特性概述**: - 零压力偏压...

    支持视频的mp3的视频及图片转换软件可将avi\mp4\3gp等转为mpx

    转换完成后,用户就可以将生成的MPX文件导入到MP3播放器中,享受音乐带来的乐趣。 综上所述,这款针对老式MP3播放器的多媒体转换工具,不但解决了老款MP3播放器无法播放现代视频格式的问题,还扩展了其功能,使之...

    ProjectViewer-v3.7.0.rar

    ProjectViewer v3.7.0是一款专为项目管理人员设计的高效工具,它允许用户无需拥有原版的Microsoft Project即可查看、审阅和打印MS Project文件。这款软件的核心功能在于其强大的项目协作和远程访问能力,使得团队...

    基于mpx+vue+node.js的双端网盘系统小鱼云盘设计与实现源码

    项目共计包含522个文件,其中SVG文件290个,JavaScript文件82个,Vue组件41个,PNG图片32个,mpx文件20个,JSON文件18个,Stylus样式表8个,Git忽略文件4个,Markdown文件4个,CSS样式4个。该系统旨在实现高效便捷的...

    基于MPX4115传感器的数字压力测量仪-电路图及源程序

    源程序使用Keil C语言编写,并生成hex文件导入到单片机中。 5.压力测试仪系统描述 压力测试仪系统描述了该系统的工作原理和流程,包括压力信号的输入、模数转换、数字信号的输出和LED显示等方面。 6. 线性区间...

    002基于MPX4115压力自动检测系统设计( 包含单片机程序与仿真原理图)

    在本项目中,我们探讨的是一个基于MPX4115压力传感器的自动检测系统设计。这个系统的核心是利用MPX4115传感器来采集压力数据,再通过AT89C51单片机进行数据处理和控制,最终通过LED共阳极显示器将压力值以可视化的...

    STM32f1系列压力传感器MPX4250压力检测仿真.rar

    在这个项目中,我们将重点讨论如何使用STM32F1与MPX4250压力传感器进行数据采集和处理。 MPX4250是一款高精度、低功耗的压力传感器,由美国Sensortechnics公司生产。这款传感器设计用于测量相对压力,其工作范围在...

    基于51单片机+MPX4115+MCP3204气压监测系统仿真设计 包含源程序Proteus仿真文件

    本设计以51单片机为主控芯片,MPX4115作为气压监测,以MCP3204作为AD数模转换,并配以时钟芯片以及虚拟串口等,可成功实现气压监测系统设计与仿真,并实现以MPX4115为探测元件,结合单片机扩展电路组成气压监测系统...

    带报警的MPX4115气压计设计

    在本项目中,我们主要探讨了如何设计一个带有报警功能的MPX4115气压计。MPX4115是一款精密的绝对压力传感器,广泛应用于气象、航空、汽车以及工业自动化等领域。它的核心功能是测量环境的压力,并将其转化为电信号。...

    mpx2010肺活量51程序

    "mpx2010肺活量51程序" 指的是一种基于MPX2010传感器的、采用51系列单片机编程的肺活量测量系统。MPX2010是一款微型压力传感器,常用于测量呼吸气体的压力变化,从而计算出肺活量。51系列单片机是广泛应用的微处理器...

    MPX4115A.pdf

    MPX系列硅压力传感器,特别是美国MOTOROLA(现为Freescale Semiconductor的一部分)生产的MPX系列传感器,便是该领域内的代表性产品之一。 MPX系列硅压力传感器以测量气压为主,可用于医疗器械、气体压力控制等众多...

    安川机器人-MPX3500产品样本.pdf

    安川机器人-MPX3500产品样本pdf,简介:安川机器人MOTOMAN-MPX3500  性能更加强悍的新型喷涂机器人!  可全方位安装(置地,壁挂,吊挂)   易用性更强:  最大动作范围 5095mm,可左右对称高密度设置。   丰富...

    mpx4115压力与18b20温度LED显示

    mpx4115压力和ds18b20温度LED显示,可精确0.1kpa,显示稳定,带预设值与报警电路,课切换压力与温度预设值显示。

    基于MPX4115的数字压力测量仪的设计

    【标题】:“基于MPX4115的数字压力测量仪的设计” ...文件“压力传感器mpx4115”可能包含了关于该传感器的详细数据手册、电路设计示例或者与之相关的代码资源,是深入学习和设计此类测量仪的重要参考资料。

Global site tag (gtag.js) - Google Analytics