3

Microsoft Project ファイルに接続するときに、MPXJ ライブラリを使用して C# コード例を見つけるのに大変苦労しています。テーブルの内容を .mpp ファイルに書き込んで画面に表示する方法を示すスニペットを誰かに投稿してもらえますか?

リンク/参照のボーナスポイント!

ありがとう!

〜ダン

4

1 に答える 1

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

アイデアは、ファイルに存在するテーブルのリストを取得し、それがタスク テーブルまたはリソース テーブルである場合はそれぞれが機能するということです。これに基づいて、タスクまたはリソースのリストを取得し、それを反復処理して、インスタンスごとに列の値を取り出して表示します。タスクやリソースを特定の方法で順序付けしようとしたわけではないことに注意してください。これは読者の演習として残しておきます。

それが役立つことを願っています!

ジョン

于 2010-12-16T12:46:07.587 に答える