【问题标题】:Reading and Writing to a Microsoft Project 2007 from C#从 C# 读取和写入 Microsoft Project 2007
【发布时间】:2026-02-23 18:40:02
【问题描述】:

有没有办法从 Microsoft Project 2007 mpp 文件中读取和写入数据? 我有一个从 Project 2003 访问数据库文件中读取和写入数据的应用程序。为了使它工作,我首先将 Project 2003 mpp 文件保存为 Access 数据库,然后我的代码可以读取和写入 Access 数据库。但 Project 2007 不允许您另存为 Access 数据库文件。我想知道是否有其他方法可以获取数据?

【问题讨论】:

    标签: c# ms-project


    【解决方案1】:

    您可以使用.NET Office Interop 来使用 Microsoft Project 2007。

    【讨论】:

    【解决方案2】:

    您可能会发现MPXJ 很有用。它将允许您读取 MPP 文件,以及来自 Project 和其他规划应用程序的各种文件格式。如果您想再次将数据读入 Project,它将允许您将数据另存为 MPX 或 MSPDI 文件。

    乔恩

    附言

    免责声明:我维护 MPXJ。

    【讨论】:

      【解决方案3】:

      Aspose.Tasks for .NET 允许您read and write data to Microsoft Project 2007。使用该组件的简单 API 可以轻松执行数据读取和写入操作。此外,它不需要在运行您的应用程序的机器上安装 MS Office。

      披露:我在 Aspose 担任开发布道师。

      【讨论】:

        【解决方案4】:

        我强烈建议使用 MS Project 对象模型。我最近开发了一个 MS Project 插件,其中我从 MS Project 导入/导出。

        我在下面提供了一个 C# 示例。

        MSProject.Tasks tasks = Globals.ThisAddIn.ProjectApp.ActiveProject.Tasks;
        
        for (int TaskNo = 1; TaskNo <= tasks.Count; TaskNo++)
        {
           string TaskName;
           TaskName = tasks[TaskNo].Name;
        
         // more code
        
        }
        

        【讨论】:

          【解决方案5】:

          您可以使用 Project Server 接口 (PSI) 来完成此操作。有一个完整的 SDK 可用:

          http://msdn.microsoft.com/en-us/library/ms512767.aspx

          也请查看报告数据库部分:

          http://msdn.microsoft.com/en-us/library/ms510779.aspx

          当然,您始终可以使用对象模型,但是在访问时间分段数据时会出现性能问题。报告数据库将所有时间分段数据非规范化为非常易于查询的视图。

          科尔比非洲 http://colbyafrica.blogspot.com

          【讨论】:

          • 谢谢。我还没有看过它,但我假设,根据名称,这允许您访问 Project Server?我有兴趣访问桌面版生成的 mpp 文件。