C#中MPXJ库的示例

时间:2010-12-15 21:11:44

标签: c# asp.net ms-project mpxj

我有一个heckuva时间在连接到Microsoft Project文件时使用MPXJ库找到任何C#代码示例。有人可以发一个片段演示如何将.mpp文件中的表格内容写入屏幕吗?

任何链接/参考的奖励积分!

谢谢!

〜丹

1 个答案:

答案 0 :(得分:4)

希望这会有所帮助。

首先,您需要打开项目文件:

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

这假设您在inputFile字符串中有一个文件名。

下面的方法应该被视为伪代码(即我没有编译它,动摇它的bug等等,这不是我写过的最优雅的东西),但它说明了这种方法:

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

这个想法是你正在检索文件中存在的表的列表,并且如果它是Task或Resource表,则检查每个表的列表。基于此,您将获取任务或资源列表,遍历该列表,并为每个实例提取列值并显示它。请注意,我没有尝试以任何特定方式订购任务或资源。我会把它作为读者的练习!

希望有所帮助!

乔恩