2010-12-15 3 views
3

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 
     } 
    } 
} 

アイデアは、あなたがファイルに存在するテーブルのリストを取得し、それは、タスクまたはリソーステーブルであれば、それぞれ1のために働いているということです。これに基づいて、タスクやリソースのリストを取得し、それを反復し、インスタンスごとに列の値を取り出して表示します。私は特定の方法でタスクやリソースを注文しようとしていないことに注意してください。私はそれを読者のための練習として残すでしょう!

希望に役立ちます!

ジョン

+0

ありがとう、ジョン!あなたが維持している製品のユーザーにあなたが与える個人的な注意を本当に感謝します。あなたの継続的なコミットメントは非常に高く評価されています! –

+0

クイック提案 - 応答を編集して、今後視聴者にCSファイルの先頭に必要なもの(net.sf.mpxjなどなど)を表示することができます。再度、感謝します! –