11月 23

Arnage 2
Creative Commons License photo credit: ArtBrom

MPXJというMicrosoft Projectのファイルへアクセスするためのライブラリを試してみました。MPXJは以下のファイル形式に対応しています。

  • Microsoft Project Exchange (MPX)
  • Microsoft Project (MPP,MPT)
  • Microsoft Project Data Interchange (MSPDI XML)
  • Microsoft Project Database (MPD),Planner (XML).

MPXJはJavaで書かれているのですがIKVMにより.NETからも使うことができます。

インストールと設定

  1. Browse MPXJ: Microsoft Project Exchange Files on SourceForge.netからmpxj-3.1.0.zipをダウンロードし、任意のディレクトリへ展開する。
  2. 展開後lib.netディレクトリにある以下のファイルをVisual Studioのプロジェクトから参照できるように設定する。
    • IKVM.OpenJDK.ClassLibrary.dll
    • IKVM.Runtime.dll
    • mpxj.dll
    • poi-3.2-FINAL-20081019.dll
  3. MPXJのクラスリファレンスはOverview (MPXJ API)を参照

これだけ。サンプルとしてこんなコードを書いてみました。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using net.sf.mpxj;
using net.sf.mpxj.reader;
using net.sf.mpxj.writer;

namespace MPXJTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
                OpenProjectFile(openFileDialog1.FileName);
        }

        private void OpenProjectFile(string fileName)
        {
            ProjectReader reader = ProjectReaderUtility.getProjectReader(fileName);
            ProjectFile projectFile = reader.read(fileName);

            ProjectHeader projectHeader = projectFile.getProjectHeader();

            textBox1.Text = "プロジェクト名: " + projectHeader.getProjectTitle();
            textBox1.Text += "\r\nプロジェクト開始日: " + projectHeader.getStartDate();
            textBox1.Text += "\r\nプロジェクト終了日: " + projectHeader.getFinishDate();

            textBox1.Text += "\r\n担当者";
            foreach (Resource resource in projectFile.getAllResources().toArray())
                textBox1.Text += "\r\n" + resource.getID() + ": " + resource.getName();

            textBox1.Text += "\r\nタスク";
            foreach (Task task in projectFile.getAllTasks().toArray())
                textBox1.Text += "\r\n" + GetTaskLevelIndent(task) + task.getName();
        }

        private string GetTaskLevelIndent(Task task)
        {
            string level = "";
            while ((task = task.getParentTask()) != null)
                level += "|--";
            return level;
        }
    }
}

このコードは指定されたMicrosoft Projectのファイルからプロジェクト名、プロジェクト開始日、プロジェクト終了日、担当者一覧、タスク一覧をテキストボックスへ出力するものです。

マイクロソフトのWebサイトで提供しているベンダーに対する提案依頼書の要請 – テンプレート – Microsoft Office Onlineを読み込んだ結果はこちら。

プロジェクト名:
プロジェクト開始日: Mon Jan 01 08:00:00 GMT 2007
プロジェクト終了日: Thu Feb 01 12:00:00 GMT 2007
担当者
0:
1: 購買マネージャ
2: ユーザー チーム
3: 評価委員会
4: 意思決定グループ
タスク
ベンダーに対する提案依頼書 (RFP) の要請
|--このテンプレートの目的を説明するメモを読む
|--RFP の基準
|--|--RFP 作成の正式なプロセスが必要かどうかを判断する基準のレビュー
|--|--購買担当に RFP を作成する必要があることについて通知
|--RFP 要請プロセス
|--|--要求の定義
|--|--|--製品とサービスのニーズを理解するためにユーザーにインタビュー
|--|--|--要求の文書化
|--|--|--回答の評価基準の定義
|--|--|--評価チームの特定
|--|--RFP の作成
|--|--|--購買担当から RFP の書式のテンプレートを取得
|--|--|--RFP のドラフト作成
|--|--|--購買担当、該当分野の専門家と RFP をレビュー
|--|--|--RFP の改良
|--|--|--RFP の内容の準備完了
|--|--市場調査
|--|--|--該当する製品またはサービスを提供するベンダー候補企業の特定
|--|--|--事前の情報提供依頼書 (RFI) が必要かどうかを決定
|--|--|--RFI の回答の収集 (必要な場合)
|--|--|--RFP の対象企業の最終決定
|--|--業界への RFP の送付
|--|--|--特定の回答段階についての期限の決定
|--|--|--期限と連絡先を記載した RFP の完成
|--|--|--RFP を対象企業に送付
|--|--|--RFP についての説明会の実施 (必要な場合)
|--|--RFP 収集プロセスの完了
|--収集後のプロセス
|--|--"入札意思あり" の回答のまとめ
|--|--質問回答プロセス
|--|--|--入札企業からの質問のまとめ
|--|--|--質問に対する正式な回答の準備
|--|--|--'入札意思あり' と表明したすべての企業に回答を公開
|--|--提案書のレビュー
|--|--|--初期評価を実施して問題を明確化
|--|--|--設定した基準に基づいて提案書を評価
|--|--|--基準を満たしていない提案企業を除外
|--|--|--残りの提案企業との話し合いの準備
|--|--個別会議/交渉
|--|--|--最終選考に残った企業にソリューションのプレゼンテーションを依頼
|--|--|--最終選考に残った企業のソリューションとデモを分析
|--|--選択の決定
|--|--|--提案書の最終分析
|--|--|--ベンダーの選択
|--|--|--契約の締結
|--|--|--選ばれなかった提案企業からフィードバックを収集
|--|--収集後のフェーズの完了
|--ベンダーからの提案依頼書 (RFP) の収集の完了

必要な情報だけを抜いてCSV出力するようなプログラムは簡単に書けそうですね。

弊社のプロジェクト管理ソフトProjectscapeでMicrosoft Projectファイルインポート機能をサポートするのにも使えそうな感じが…もう少し評価してみたいと思います。

Tagged with:
7月 08

Offtheball LLCは近日中にホームページ作成サービスを開始します。

それに伴い、Concrete5というCMSで構築していたOffteball LLCのホームページをWordpressへ移行しました。

パーマリンクなどがおかしい可能性がありますが、見つけ次第修正していきます。

今までは更新情報をここに書いていましたが、今後は直接www.offtheball.jpの方へ書いていきます。

よろしくお願いします。

Tagged with:
6月 18

先日お知らせしたプロジェクト管理ソフトProjectscapeの無料版がVectorで公開されました。


Vector:Projectscape Free Edition (WindowsNT/2000/XP/Vista / パーソナル) – ソフトのダウンロード

お試しください。

尚、弊社ではProjectscapeのカスタマイズ(御社専用仕様)や、既存システムとの連携プログラム開発、ソースコードの販売も承っております。お気軽にお問い合わせください。

Tagged with:
preload preload preload