民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS Excel を本気でレポーティングツールとして使うには

<<   作成日時 : 2008/10/27 08:31   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

まだネタのレベル、あるいはアイデアのレベルの話であるが。
たくさんのお客様が Excel 形式で「人間にとって見やすい形」でのデータ納品を希望されている以上、それが本当に可能なのか不可能なのか、調べてみることは悪いことではあるまいということで、いくつかの解決策を検討してみた。

ただし、机上で。
机上といっても過去の経験も踏まえているので、妄想ではない。

課題
あらかじめ Excel で見栄えの良い雛形のワークシートを一枚作っておく。
手製のアプリケーションで、このワークシートの必要な部分に数値や文字列をセットする。
ワークシートに名前をつけて保存する。

案1
Excel VBA を使う。
これは動作の確実さという点では最良の選択肢だ。
過去の経験からして、雛形のワークシートに VBA を直接埋め込んでしまうと、「開こうとしているブックには、マクロが含まれています云々」のメッセージが表示されてうれしくない。
なので、雛形に VBA を埋め込むのではなく、「雛形を開いて作業して別名をつけて保存する」 VBA だけを埋め込んだ、別のワークシート(厳密にはワークブックというべきだったか)を用意することになる。
ただし、このやり方だと、スピードが遅いので、数十件が限度になるのではないだろうか?

案2
Perl の Spreadsheet::ParseExcel、Spreadsheet::WriteExcel を使う。
これは、実行速度の面では申し分ないし、OS が Microsoft Windows 系である必要もないというメリットがある。
しかし、Spreadsheet::ParseExcel と Spreadsheet::WriteExcel は連動できるように設計されているわけではないので、内部処理としては、雛形のワークシートを開いた後に、「雛形を ParseExcel で分析して同じ内容のワークシートを WriteExcel で一から作り直す」必要がある。
なので、「一から作り直す」ためのコーディング作業が大量に発生するという問題がある。
ParseExcel、WriteExcel とも、日常作業には十分な機能を備えているが、レポーティングに使えるほど細かいプロパティ設定はあまり得意ではないという問題もある。また、Windows 環境だと、ActivePerl のインストールが意外とやっかいだったりする。
この案は、よほどシンプルなレポーティングにしか使えないだろう。

案3
Jakarta POI を使う。
案1の VBA よりは速いし、案2の Perl モジュールよりは機能豊富で、これが一番バランスの取れた解決策かも知れない。
Jakarta POI なら、Excel の雛形ファイルを開いて、データをセットして、名前をつけて保存するという一連の手順を容易に実現することができる。
現状、「ピボットテーブルを使って」というような作業までは実現できないようだが。
この案の問題は...私が日ごろあまり Java を使っていないため、「不慣れ」が原因のトラブルを生じやすいという、個人的な問題がある。
Java が得意、あるいは Java プログラマが身近にいるならお勧めの解決策だ。

というわけで、「案3」を使いこなせるのが最高のレポーター(?)と言えそうだ。
...今から Java の訓練を始めておくかな?

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Excel を本気でレポーティングツールとして使うには 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる