Microsoft Project のファイルを扱うための MPXJ ライブラリを使ってみた
MPXJ ってなに
Excel のデータが POI ライブラリによって操作できるように、Microsoft Project のデータを変更するためのライブラリもこの世にはある。その一つが MPXJ だ。
MPXJ - Microsoft Project Exchange
調べた限りだと、無償のライブラリはこれしかなさそう。
- Microsoft Project ファイルに限らず、Primavera など他の形式にも対応。
- Java で実装されているが、IKVM の技術を使っているので .NET でも使えるよ、ということを謳っている。
- 対応している主要なファイル形式
覚えておきたい
- mpp ファイルは書き込み不可。解析が超大変のようでライブラリでのサポートは断念したらしい。
- 正直これは痛いけれど、仕方ない…。
- POI ライブラリに依存。
- Maven Central に登録してあるけど、公式のものじゃないらしい。Nuget にあるのは公式。
コード例
ファイルの操作
// ゼロから作成 ProjectFile file1 = new ProjectFile(); // ファイルの読み込み ProjectReader reader = new MPPReader(); ProjectFile file2 = reader.read(inputStream); // ファイルの書き込み ProjectWriter writer = new MSPDIWriter(); writer.write(file2, outputStream);
タスクの操作
// タスクの追加 Task task = projectFile.addTask(); // タスクの属性の設定 task.setName("ER図作成"); // タスク名 task.setDuration(Duration.getInstance(1, TimeUnits.DAYS)); // タスクの親子関係の設定 Task taskParent = projectFile.addTask(); Task taskChild = projectFile.addTask(); taskParentChild.addChildTask(taskChild);