<?php
class GantTest
{
public function parseMSPJ($file_path)
{
// $file_path = $this->session->file_path;
require_once 'http://localhost:8080/JavaBridgeTemplate721/java/Java.inc';
$data = array();
if (empty($file_path)) {
return $data;
}
$mppRead = new Java('net.sf.mpxj.mpp.MPPReader');
$Filecontent = $mppRead->read($file_path);
// $Alltasks = $Filecontent->getAllTasks();
$Alltasks = $Filecontent->getChildTasks();
echo $Alltasks;
$Tasks_size = java_values($Alltasks->size());
// ID|任务名|开始时间|结束时间|完成百分比|资源|工期
for ($i = 1; $i < $Tasks_size; $i++) {
$res = $this->getResource($Alltasks[$i]);
echo $res;
if (empty($res)) {
continue;
}
foreach ($res as $val) {
$separator = '|';
$string = $Alltasks[$i]->getUniqueID() . $separator . $Alltasks[$i]->getName() . $separator . $Alltasks[$i]->getStart() . $separator . $Alltasks[$i]->getFinish() . $separator . $Alltasks[$i]->getPercentageComplete() . $separator . $val . $separator . $Alltasks[$i]->getDuration();
$data[] = explode('|', $string);
}
}
return $data;
}
public function getResource($task)
{
$resource = $task->getResourceAssignments();
$size = java_values($resource->size());
$buf = '';
for ($i = 0; $i < $size; $i++) {
$buf[] = $resource[$i]->getResource()->getName();
}
return $buf;
}
}
// 甘特图测试文件地址,注意只能是 mpp 文件
$file_path = "C:\sun.mpp";
$data = (new GantTest)->parseMSPJ($file_path);
echo $data;
1,若显示没有出现异常,则说明配置文件正确
2,若显示以下错误,说明读取的方法不存在,有两种可能性:
2.1,使用的 mpxj.jar 包过时了
2.2,mpxj.jar 下载过程中出现了错误,导致下载的包有欠缺
解决方案:去网站下载新的 jar 包即可
jar 包下载网站(https://mvnrepository.com/search?q=mpxj)
3,若出现以下错误,说明 Java 配置出现问题
解决方案:运行查看甘特图环境配置测试文件中的代码,查看 Java 的配置是否正确
着重注意 Java 的包存储库位置是否正确