2

MPXJ ライブラリ配布の MpxjCreate サンプルに基づいてアプリを作成しました。いくつかのタスクを作成し、そのうちのいくつかは子タスクを持ち、Task.setStart()/を使用Task.setFinish()してタスクの開始日/終了日を設定します。を使用して結果のファイルを書き込んだ後MSPDIWriter、タグ内の結果の xml ファイルに次のタグが表示されます<Task>

<Start>2013-01-01T00:00:00</Start>
<Finish>2016-12-31T00:00:00</Finish>

しかし、MS Project 2007 を使用してファイルを開くと、指定された値を無視してタグの<StartDate>値を使用しているように見えるため<Project>、1 日間の一連のタスクが発生します。

<Task>-><Start>/<Finish>「知的」計算なしでMS Projectタスクの開始日/終了日のタグ値を使用するにはどうすればよいですか?

4

2 に答える 2

1

2003 年版以来、私は常に MS-Project XML ファイルのインポートに苦労してきました。

今、私は MSP 2013 の問題に対処しなければなりません (なぜ Microsoft なのか? なぜそれほど予測できないのか?)

目的の値を正しくインポートするには、いくつかの基本的な情報が必要なようです。

これが私がすることです:

task.setEstimated(false); //to get rid of the percentage in the duration value

task.setPercentageComplete(50d); //50% for example
task.setPercentageWorkComplete(50d);
task.setPhysicalPercentComplete(50d);

task.setStart(<start date>);
task.setFinish(<finish date>);
task.setActualStart(<actual start date>);
task.setActualFinish(<actual finish date>); //only necessary if the task is 100%

task.setDuration(Duration.getInstance(4d, TimeUnit.DAYS)); //4d for example
task.setActualDuration(Duration.getInstance(2d, TimeUnit.DAYS));

double remainingDuration = task.getDuration().getDuration() - task.getActualDuration().getDuration();
task.setRemainingDuration(Duration.getInstance(remainingDuration, task.getDuration().getUnits()));

//if your task has resources assigned, you should set the work values
//suppose you have 2 resources assigned with 3 units each
double work = task.getDuration().getDuration() * 6;
task.setWork(Duration.getInstance(work, task.getDuration().getUnits()));
task.setRegularWork(work);

double actualWork = work * task.getPercentageComplete() / 100d;
task.setActualWork(Duration.getInstance(actualWork, task.getWork().getUnits()));

double remaining = task.getWork().getDuration() - task.getActualWork().getDuration();
task.setRemainingWork(Duration.getInstance(remaining, task.getWork().getUnits()));

まあ、これで十分だと思います。

于 2015-12-14T13:35:00.613 に答える
0

で期間を追加することで解決された同様の問題がありましたsetManualDuration(...)

どうやら開始と終了を指定するだけでは十分ではなく、期間も必要です。

必要かどうかはわかりませんが、指定しますsetTaskMode(TaskMode.MANUALLY_SCHEDULED)

于 2013-11-05T12:48:55.040 に答える