2010-12-15 2 views
3

Microsoft Project 파일에 연결할 때 MPXJ 라이브러리를 사용하여 C# 코드 예제를 찾는 데 시간이 필요합니다. 누군가가 화면에 .mpp 파일의 표 내용을 쓰는 방법을 보여주는 스 니펫을 게시 할 수 있습니까?C#의 MPXJ 라이브러리 예제

링크/참조에 대한 보너스 포인트!

감사합니다.

~ 댄

답변

4

잘하면이 도움이됩니다.

ProjectReader reader = ProjectReaderUtility.getProjectReader(inputFile); 
ProjectFile projectFile = reader.read(inputFile); 

이 당신이 입력 _ 문자열에 파일 이름을 가지고 있다고 가정합니다

먼저 당신은 당신의 프로젝트 파일을 열어야합니다.

아래의 방법은 가상 코드로 처리해야합니다 (즉, 컴파일하지 않았고 버그를 떨쳐 버렸습니다. 그리고 내가 지금까지 작성한 것 중 가장 우아한 것은 아닙니다). 그러나 접근 방법을 보여줍니다 :

public void dumpTables(ProjectFile file) 
{ 
    List tables = file.getTables(); 
    Iterator iter = tables.iterator(); 
    while (iter.hasNext()) 
    { 
     Table table = (Table)iter.next(); 
     if (table.getResourceFlag()) 
     { 
      List resources = file.getAllResources(); 
      Iterator resourceIter = resources.iterator(); 
      while (resourceIter.hasNext()) 
      { 
       Resource resource = (Resource)iter.next(); 
       List columns = table.getColumns(); 
       Iterator columnIter = columns.iterator(); 
       while (columnIter.hasNext()) 
       { 
        Column column = (Column)columnIter.next(); 
        Object columnValue = resource.getCachedValue(column.getFieldType()); 
        Console.Write(columnValue); 
        Console.Write(","); 
       } 
       Console.WriteLine(); 
      } 
     } 
     else 
     { 
      List tasks = file.getAllTasks(); 
      // etc. as above 
     } 
    } 
} 

아이디어는 당신이 파일에 테이블의 목록을 검색하고,이 작업 또는 자원 테이블 인 경우 각각에 대해 운동하는 것입니다. 이를 기반으로 작업 또는 자원 목록을 가져 와서 반복하고 각 인스턴스에 대해 열 값을 가져 와서 표시합니다. 특정 방법으로 작업이나 자원을 주문하려고 시도하지 않았습니다. 나는 그것을 독자를위한 운동으로 남겨 둘 것이다!

희망 하시겠습니까?

jon

+0

감사합니다. Jon! 귀하가 유지하는 제품의 사용자에게 제공하는 개인적인 관심에 진심으로 감사드립니다. 커뮤니티에 대한 귀하의 지속적인 헌신은 대단히 감사합니다! –

+0

빠른 제안 - 응답을 편집하여 향후 시청자에게 CS 파일 상단에 필요한 내용 (net.sf.mpxj 등 사용)을 표시 할 수 있습니다. 고마워, 또! –