【问题标题】:Reading .mpp file from Python 2.7从 Python 2.7 读取 .mpp 文件
【发布时间】:2012-07-09 22:47:39
【问题描述】:

我需要从 Python 2.7 上运行的 Python 应用程序中读取 Microsoft 项目计划(.mpp 文件)。

没有在网络上获得任何相同的资源或指针。

有什么想法吗?

【问题讨论】:

    标签: python ms-project


    【解决方案1】:
    1. 您需要安装pywin3(适用于 Windows 的 Python 扩展)。
    2. 您可以对 .mpp 文件进行操作。

    例子:

    import win32com.client
    
    doc = 'C:\\Project1.mpp'
    try:
      mpp = win32com.client.Dispatch("MSProject.Application")
      mpp.Visible = 1
      try:
        mpp.FileOpen(doc)
        proj = mpp.ActiveProject
        print proj.BuiltinDocumentProperties(11), ",", proj.BuiltinDocumentProperties(12)
      except Exception, e:
        print "Error", e
      mpp.FileSave()
      mpp.Quit()
    except Exception, e:
      print "Error opening file",e
    

    【讨论】:

    • 如果 OP 不使用 Windows 或没有安装 Project 怎么办?
    • 实际上,如果您使用的是 Windows 以外的其他操作系统,则没有解决办法。也许在 Linux 上使用 WINE 或类似的东西。但我建议尝试在 Linux 开发环境(或 Mac)中开发特定于 Windows 的代码是在为您自己的背部创建一根棍子。
    • 你说如果安装了项目是什么意思?你想处理 .mpp 文件不是吗?
    • 提供的代码足以打开需要导航到 mpp 文件的文件浏览/打开提示。它只是从那里失败,给出 TypeError: 'bool' object is not callable。任何想法如何以编程方式打开文件以及如何从 mpp 文件中读取数据?使用 dir(mpp object) 不会提供太多有用的信息。一个完整的工作示例将不胜感激。感谢您的努力。
    • @infoadmin12345 请参阅MS Project VBA Dcoumentation 打开文件后,您可以使用 VBA 文档获取其余部分。例如“对于 proj.Tasks 中的任务:print(task.getField(mpp.field_name_to_field_constant('Start')))”
    【解决方案2】:

    您可能会发现使用 MPXJ 可以实现所需的功能,尽管您需要使用基于 JVM 的 Python(例如 Jython)来处理 Java 版本的库,或者使用基于 CLR 的 Python (例如 IronPython 或 Python.Net)使用 .Net 版本的库,或者您需要使用桥接库(例如 JPype)。

    【讨论】:

      【解决方案3】:

      Python package of Aspose.Tasks Cloud 无需任何依赖即可操作 MS Project 和 Oracle Primavera 文件。它是付费 API,但免费试用计划每月提供 150 次 API 调用。

      P.S:我在 Aspose 担任支持开发人员。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        • 2014-08-31
        • 1970-01-01
        • 2016-06-23
        • 1970-01-01
        相关资源
        最近更新 更多