open-msp-viewer icon indicating copy to clipboard operation
open-msp-viewer copied to clipboard

Ability to open .mpp files (binary)

Open rpbouman opened this issue 10 years ago • 8 comments

Currently the open-msp-viewer can open only XML files (see http://msdn.microsoft.com/en-us/library/bb968652(v=office.12).aspx), regardless of the MS Project version.

The native format preferred by the MS Project software itself is the binary .mpp format. This issue is to

  1. see how many users would like to see the open-msp-viewer handling .mpp files directly
  2. to gather contributions (be it effort, information, money) towards realizing such a feature.

Microsoft has published the specification for a number of its binary office file formates (see http://msdn.microsoft.com/en-us/library/office/cc313105(v=office.12).aspx). Sadly, the .mpp file format is not among these, nor does there seem any plan to publish this )(see http://social.msdn.microsoft.com/Forums/en-US/fd590f09-919f-497d-a6c7-a7fc05963886/mpp-format?forum=os_binaryfile). A specification of the .mpp format would be a significant contribution required from the community to make this feature happen.

There is currently one open source library that I know of that can read .mpp files called mpxj (see http://mpxj.sourceforge.net/). This java library itself relies on apache's poi library (http://poi.apache.org/). In principle, the source code for these projects could be analyzed to prepare a specification of the .mpp file format.

So please leave a comment to explain why you would need this feature, and/or if you would like to contribute towards realizing it.

rpbouman avatar Aug 20 '14 08:08 rpbouman

The MPXJ format might also be of interest since it is apparently used as exchange between primavera and MS Project. Spec is here: http://support.microsoft.com/kb/270139

rpbouman avatar Aug 20 '14 11:08 rpbouman

There are many XML issues that even MS-Project itself will open a different schedule than original after importing XML.

XML for schedules I work become very, very big, specially when we have progress measured in work hours per activity. We have XML files of over 60MB

Those are two reasons for any effort in opening MPP. I will get you more later.

Peter (skype: petersmello)

petersmello avatar Aug 26 '14 19:08 petersmello

Peter, thanks! Yes I see mpp files becoming more and more of a target for future development.

rpbouman avatar Aug 29 '14 08:08 rpbouman

:+1:

b-long avatar Oct 27 '14 14:10 b-long

https://kaitai.io/ https://ide.kaitai.io/

meta:
  id: compobj
  endian: le
  encoding: ASCII
seq:
  - id: unk_skip
    size: 28
  - id: av_size
    type: u4
  - id: app_version
    type: str
    size: av_size
  - id: ff_size
    type: u4
  - id: file_format
    type: str
    size: ff_size
  - id: aid_size
    type: u4
  - id: app_id
    type: str
    size: aid_size

Turns into:

{
  "unkSkip": [1, 0, 254, 255, 3, 10, 0, 0, 255, 255, 255, 255, 58, 143, 183, 116, 200, 200, 209, 17, 190, 17, 0, 192, 79, 182, 250, 241],
  "avSize": 23,
  "appVersion": "Microsoft.Project 14.0\u0000",
  "ffSize": 16,
  "fileFormat": "MSProject.MPP14\u0000",
  "aidSize": 20,
  "appId": "MSProject.Project.9\u0000"
}

Borrowing heavily from the work done by mpxj Using kaitai the format can be converted to various languages, including javascript.

mpp file is a zip containing various other files. If we can get all of those parsed we should have a start. There will definitely be some interdependence that will need to be figured out.

Source of sample mpp files (Project 2010): https://resources.oreilly.com/examples/9780735626959-files/

s7726 avatar May 27 '18 15:05 s7726

@s7726 thanks for the links. Frankly, this project has been a bit in the background for me. I will gladly accept pull requests, but I don't think there is much chance of me developing this in the near future.

rpbouman avatar May 27 '18 17:05 rpbouman

There is currently one open source library that I know of that can read .mpp files called mpxj (see http://mpxj.sourceforge.net/). This java library itself relies on apache's poi library (http://poi.apache.org/). In principle, the source code for these projects could be analyzed to prepare a specification of the .mpp file format.

Does apache's poi library (http://poi.apache.org/) has any format spec on mpp file? I try to search but cannot find any.

Since mpp is based on the MS compound format, is there any doc on which streams are included in the mpp file?

alanccw avatar May 30 '24 14:05 alanccw

mpp file is a zip containing various other files. If we can get all of those parsed we should have a start. There will definitely be some interdependence that will need to be figured out.

Source of sample mpp files (Project 2010): https://resources.oreilly.com/examples/9780735626959-files/

I download a sample file Guided Tour_Start.mpp and it is in MS compound file format(OLE/COM format) and is not a zip file. It contains some streams but the stream names are looks strange, such as "VarMeta", don't understand its meaning. If there are any doc explaining on this, that will be great!

alanccw avatar May 30 '24 14:05 alanccw