使用C#编程访问Microsoft Project(MPP)文件

20

我有哪些选项可以通过编程方式访问Microsoft Project文件?每种方法的利弊是什么?

基本上,我需要将文件中的所有数据导入另一个数据结构。使用Office Interop库并不是首选。

5个回答

14

MPXJ(mpxj.sf.net)库提供Java和.Net两种版本,可使用一致的API读写多种Microsoft Project文件格式。我知道有商业产品同时使用Java和.Net版本的MPXJ而没有任何问题。

免责声明:我是MPXJ的维护者。


你好Jon,谢谢你的回复。我在想我们是否能够使用MPXJ来安排任务的开始/结束日期。例如,我添加了三个任务:任务1,任务2和任务3。任务2有一个完成开始的依赖关系。任务3有一个完成到完成的依赖关系... 如果我添加了这些依赖关系,它们的开始/结束日期将如何重新计算? - Muhammad Adnan
刚刚看了一下MPXJ - 太棒了!谢谢Jon,这是一个非常好的和有用的贡献。这不仅仅挽救了我的一天,还保留了多年的用户数据。 - Roland Bouman
它在控制台应用程序中可以工作,但是当我尝试从SharePoint文档库中读取文件时,它无法在事件接收器中工作。 - Akshay
@Akshay 在 https://github.com/joniles/mpxj 上开一个问题,这将有助于找出原因。 - Jon Iles
@JonIles 在你的回答中提到你可以写入多个Microsoft Project文件格式,但是请确认你不能通过MPXJ写入.mpp文件格式,这是保存Ms Project文件时的标准格式。当我执行ProjectWriter writer = ProjectWriterUtility.getProjectWriter(FileName);时,我会收到一个错误,并且http://www.mpxj.org/faq/提到你无法写入MPP文件。 - Chris Harper
1
@ChrisHarper 没错。MPXJ不会写MPP文件。我相信Aspose Tasks提供了一些写MPP文件的支持。 - Jon Iles

7
您可以使用Aspose.Tasks for .NET。该组件允许您处理Microsoft Project文件。与Office Interop不同,它不需要在服务器上安装MS Office。API非常简单易用,并提供了丰富的功能来读取、编辑、写入和转换MPP文件。

该组件是一个普通的.NET程序集,可用于您的.NET应用程序。它适用于任何Windows操作系统,也适用于32/64位环境。

声明:我在Aspose担任开发者推广工作。


5
这里有几种选择:
  1. Interop(对于大型项目而言过于混乱和缓慢)
  2. 将项目保存为XML并在其中进行操作(混乱)
  3. 将项目保存到数据库中(这不是发布,仅适用于2003年版本的项目 - 在保存时查看ODBC选项)。我在集成方案中经常看到它被使用
  4. Projette(商业软件,每个许可证10美元)
  5. ILog Project Viewer(也是商业软件)

Projetty网站无法打开 :( - Denis Gladkiy

4
Microsoft Office API提供对MS Project的编程访问。我只用它来处理Word和Excel,所以不知道接口有多丰富——你需要在MSDN上查找一些信息来了解你可以做什么和不能做什么。
我的公司的一个Java项目使用Aspose的商业产品,它允许应用程序操作包括Project在内的Office文档。它适用于他们的目的,但同样地,他们只用它来处理Word和Excel,所以无法为Project提供建议。
编辑(2019):我可以确认这是一个非常有能力的产品。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接