2013-05-29 3 views
2

MPXJ 라이브러리 배포본의 MpxjCreate 샘플을 기반으로 응용 프로그램을 만들었습니다. 몇 가지 작업을 만들고 그 중 일부는 하위 작업으로 & Task.setStart()/Task.setFinish()을 사용하여 작업 시작/완료 날짜를 설정합니다. 나는 MS 프로젝트 2007을 사용하여 파일을 열 때, 주어진 값 &을 무시하는 것 같다MPXJ에서 만든 MSPDI를 가져온 후 MS 프로젝트에 잘못된 시작일과 종료일이 표시됩니다.

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

을에서 <StartDate> 값을 사용 내가 MSPDIWriter을 사용하여 파일을 결과로 쓰기 한 후, 다음과 같은 태그 <Task> 태그 안에 xml 파일을 결과에서 볼 수있다 <Project> 태그를 사용하면 1 일 동안 일련의 작업이 수행됩니다.

"지적"계산없이 MS 프로젝트 작업 시작/종료 날짜에 <Task>-><Start>/<Finish> 태그 값을 사용하려면 어떻게해야합니까?

+0

생성하는 XML 샘플을 공유 할 수 있습니까? –

답변

0

나는 비슷한 문제가 있었는데, 이는 지속 시간을 setManualDuration(...)으로 추가하여 해결되었습니다.

시작과 끝을 지정하는 것만으로는 충분하지 않습니다. 기간도 필요합니다.

이 필요한 경우 잘 모르겠어요,하지만 난 또한 2003 버전 이후 setTaskMode(TaskMode.MANUALLY_SCHEDULED)

0

를 지정, 나는 항상 가져 MS-프로젝트 XML 파일로 분투.

는 지금은 (마이크로 소프트가 왜 그렇게 예측할 이유는 무엇입니까?) MSP 2013 문제

몇 가지 기본 정보가 제대로 수입 원하는 값을 얻기 위해 필요하다고 날 것으로 보인다 처리해야합니다.

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())); 

글쎄, 나는이 충분하다 생각 : 여기

내가 할 것입니다.