2010-12-15 48 views
3

我有一個heckuva時間連接到Microsoft Project文件時使用MPXJ庫查找任何C#代碼示例。有人可以發佈一個片段,演示如何將.mpp文件中的表格內容寫入屏幕?在C#中的MPXJ庫的例子

任何鏈接/參考的獎勵積分!

謝謝!

〜丹

回答

4

希望這會有所幫助。

首先,你需要打開你的項目文件:

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

這是假設你在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

謝謝,喬恩!我非常感謝您對您所維護產品的用戶給予的個人關注。非常感謝您對社區的持續承諾! – 2010-12-16 20:35:47

+0

快速建議 - 您可能想編輯您的響應,以顯示未來的觀衆,包括他們需要在CS文件的頂部(使用net.sf.mpxj等等)。再次感謝! – 2010-12-16 21:21:11