1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php读取mpp php解析mpp文件中的前置任务

php读取mpp php解析mpp文件中的前置任务

时间:2022-02-07 07:17:31

相关推荐

php读取mpp php解析mpp文件中的前置任务

获取层级的project任务参考

启动javabridge

java -jar JavaBridge.jar SERVLET_LOCAL:8089

1.读取mpp文件

$file_path = "/new.mpp";

$file_path = getcwd() . $file_path;

if (!file_exists($file_path)) {

var_dump("文件不存在");

return;

}

$mppRead = new Java('net.sf.mpxj.mpp.MPPReader');

try {

$Filecontent = $mppRead->read($file_path);

} catch (Exception $e) {

var_dump($e);

return;

}

2.获取任务

获取project的任务

$allTasks = $Filecontent->getChildTasks();

$tasks_size = java_values($allTasks->size());

if($tasks_size){

getChildren($allTasks[0]);

}

说明:

$Filecontent->getChildTasks()获取的是文件,即$allTasks[0]为project文件,再向下是任务

获取任务的基本信息及获取任务流

function getChildren($task)

{

$child = $task->getChildTasks();

$tasks_size = java_values($child->size());

$data = array();

for ($i = ; $i < $tasks_size; $i++) {

$tmp = getResource($child[$i]);

$items = array();

$items['id'] = $child[$i]->getID() . '';

$items['name'] = $child[$i]->getName() . '';

//前置任务

$prev_task = getProcessors($child[$i]);

if ($prev_task) {

$items['prev_task'] = $prev_task;

}

//获取下一级任务

$children = getChildren($child[$i]);

if ($children) {

$items['children'] = $children;

}

$data[] = $items;

}

return $data;

}

获取任务流(即前置任务)具体实现

function getProcessors($task)

{

$items = array();

$rs = '';

$predecessorLinks = $task->getPredecessors();

$size = java_values($predecessorLinks->size());

$data = array();

for ($i = ; $i < $size; $i++) {

$tmp = $predecessorLinks[$i]->getTargetTask()->getUniqueID() . '';

if ($tmp) {

$items[] = $tmp;

}

}

if ($items) {

$rs = implode(',', $items);

}

return $rs;

}

php解析mpp文件中的多级任务

获取层级的project任务参考 启动javabridge java -jar JavaBridge.jar SERVLET_LOCAL:8089 1.读取mpp文件 $file_path = & ...

php解析mpp文件中的资源

获取层级的project任务参考 启动javabridge java -jar JavaBridge.jar SERVLET_LOCAL: 1.读取mpp文件 $file_path = &quot ...

XML:使用DOM技术解析xML文件中的城市,实现select级联选择

中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> ...

php解析mpp文件

php没有找到相应的包 Java的mpxj可以实现 所以借助JavaBridge.jar 1.安装jdk,设置环境变量(我的版本jdk1.8.0_131) 2.下载mpjx 在http://www.m ...

awk 解析maps文件中的地址

maps文件一般是这个样子: pi@raspberrypi:~ $ sudo cat /proc//maps 54b88000-54c8d000 r-xp b3: /lib/systemd/syste ...

iOS如何解析crash文件中的地址

1.目录中存放app文件 2.打开文件 3.执行命令otool -arch arm64 -l ./QQStock | grep -B 1 -A 10 "LC_SEGM" | gr ...

python解析pcap文件中的http数据包

使用scapy.scapy_http就可以方便的对pcap包中的http数据包进行解析 scapy_http可以在/invernizzi/scapy-http下载, ...

Maven让资源文件处理插件能够解析资源文件中的Maven属性

${project.basedir}/src/main/resour ...

Python3解析dex文件

一.说明 1.1 背景说明 看的时候反复听说“PE文件格式”,到Android安全兴起就不断听说“dex文件格式”.意思是看得懂的,但自己不能手解析一番总觉得不踏实,所以决定 ...

随机推荐

AChecker &plus; Selenium2对需要登录的页面进行自动化可访问性测试

前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力. 名词解释: 网站可访问性测试:国内基本没有 ...

&lbrack;CrunchBang&rsqb;tint2默认设置

#--------------------------------------------- #TINT2CONFIGFILE #-------------------------------- ...

Android开发日志问题

以前在Android开发中发现,日志打印好多,调试的时候各种加Log,之后就各种不删除,导致项目后期花大把时间删除日志打印. 学到一个好方法: 在所有尽可能高的父类里面加上一个常量 DEBUG ,一开 ...

js控制父子页面传值(iframe和window&period;open)

在html中,window对象代表浏览器中一个打开的窗口,就像我们C/S中做窗体一样,在该页的window对象就是new了一个新的窗体对象. 就像做C/S开发一样,浏览器是一个软件,每一个网页都是它n ...

【C&plus;&plus;】动态开辟二维数组

二维数组在内存中的分配例如以下: C方式呈现: #include usi ...

一个RESTful&plus;MySQL程序

前言 本章内容适合初学者(本人也是初学者). 上一章内容(/vanezkw/p/6414392.html)是在浏览器中显示Hello World,今天我们要 ...

Linux搭建SVN服务器(服务端)

Linux搭建SVN服务器(服务端) 1 安装SVN SVN客户端:TortoiseSVN,官网下载:/downloads.html(客户端) # yum ...

一条SQL语句执行得很慢的原因有哪些?&lpar;转&rpar;

一条SQL语句执行的很慢,那是每次执行都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?所以我觉得,我们还得分以下两种情况来讨论. 1.大多数情况是正常的,只是偶尔会出现很慢的情况. 2.在数据 ...

springboot logback 相关使用

参考: /EasonJim/p/9159195.html /tianyaleixiaowu/article/de ...

Java 基础 面向对象和抽象类

面向对象变量 局部变量和成员变量区别 区别一:定义的位置不同 定义在类中的变量是成员变量 定义在方法中或者{}语句里面的变量是局部变量 区别二:在内存中的位置不同 成员变量存储在对内存的对象中 局部变 ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。