Skip to content

informat.mpp Mpp文件

概述

使用informat.mpp执行mpp文件的读写操作

createProjectFile

创建Mpp项目文件对象

javascript
informat.mpp.createProjectFile()

返回值

类型为MppProjectFile

read

从本地沙盒中读取mpp文件,如果文件不存在将会抛出异常

javascript
informat.mpp.read(file)
参数类型描述
fileStringapp的沙盒环境中的MPP文件地址

返回值

类型为MppProjectFile

示例

js
let projectFile = informat.mpp.read('软件开发.mpp');
var resourceAssignments = projectFile.getResourceAssignments();
resourceAssignments.list().forEach(as => {
    if (as.getTask() == null || as.getResource() == null) {
        return;
    }
    var taskId = as.getTask().getID();
    var resourceName = as.getResource().getName();
    console.log('taskId:' + taskId + ',resourceName:' + resourceName);
});
var tableContainer = projectFile.getTables();
if (tableContainer != null && tableContainer.size() > 0) {
    var columns = tableContainer.list().get(0).getColumns();
    columns.forEach(c => {
        console.log('column:' + c.getTitle());
    });
}
var tasks = projectFile.getTasks();
tasks.list().forEach(task => {
    console.log('taskId:' + task.getID() + ',taskName:' + task.getName());
});

write

将projectFile数据写入xml文件

js
informat.mpp.write(projectFile, targetFile, config)
参数类型描述
projectFileMppProjectFileproject文件对象
targetFileStringapp的沙盒环境中的文件地址
configMppWriterConfig配置文件
js
var file = informat.mpp.createProjectFile();
var pmResource = file.addResource();
pmResource.setName("项目经理");
var devResource = file.addResource();
devResource.setName("开发人员");
var customFieldContainer = file.getCustomFields();
var field = customFieldContainer.getOrCreate('TEXT1');
field.setAlias("MyCustomField");
var task1 = file.addTask();
task1.setName("root");
task1.setTaskMode('MANUALLY_SCHEDULED');
task1.setStart(new Date());
task1.setFinish(new Date(2024, 3, 1));
task1.setText(1, '测试1')
task1.addResourceAssignment(pmResource);
task1.addResourceAssignment(devResource);
//
var task12 = task1.addTask();
task12.setName("任务A");
task12.setTaskMode('AUTO_SCHEDULED');
task12.setStart(new Date());
task12.setFinish(new Date(2024, 2, 1));
task12.setText(1, "text1");
task12.addResourceAssignment(devResource);
//
task1.addPredecessor(task12, null, null);
task12.addPredecessor(task1, null, null);
//
var task2 = file.addTask();
task2.setName("任务B");
task2.setTaskMode('MANUALLY_SCHEDULED');
task2.setStart(new Date(2024, 4, 1));
task2.setFinish(new Date(2024, 5, 1));
//
var config = {
    microsoftProjectCompatibleOutput: false,
    splitTimephasedAsDays: true,
    writeTimephasedData: false,
    saveVersion: "Project2016"
}
informat.mpp.write(file, 'output.xml', config);