xls.jpg


Naotenが仕事で作る業務用アプリケーションでは、
入力したデータを最終的にExcelファイルに出力したい、
等の要望がある。

ペーパーレスになってきている社会といえども、
結局最終的には、データを紙に印刷して、
署名や捺印をして正式な書類とする事が多い、と言う事なのだろう。

(以下、追記へ。)
 
 
んで、プログラム上でExcelファイルを制御する場合、
VisualStudio系のプログラムであれば一般的に、
COMオブジェクトと言うのを利用する。

Excelでは、Excelを操作する為の汎用的な機能をプログラマに提供していて、
ExcelをインストールすればExcelを制御できるCOMオブジェクトもインストールされる。

Microsoft Excel 9.0 Object Library

とかがそう。
(インストールされているExcelのバージョンによって
 10.0だったり、8.0だったり別の数字だったりする。)


これをプログラムから操作してExcelのブックを読み込んだり、生成したり、
値を書き込んだりする訳だけれど、注意点がいくつかある。

1.アプリケーション実行環境にExcelがインストールされていないといけない。
  使用する機能によってはインストールするバージョンも重要。

2.オブジェクトの解放をちゃんとしないとExcelプロセスが際限なく増える。
  初心者が陥りやすい罠。

3.とにかく処理が遅い。
  色々なテクニックで若干の速度向上は可能ではあるが限界がある。


1は、お客さんにちゃんと説明して理解してもらい、
2は、極力、セオリーを守ってきちんとメモリーを解放でなんとかなるのだけれど、
3に関してはもう、どうしようもない。

実際に運用上それだけ出力するかは別として、
やりようによっては数千件のデータをExcel出力出来るので、
試しに膨大な件数のデータ処理を実行してみると、
Excelファイル作成に5分~10分とかかかるのだ。

前フリが長くなったけれど、そこでウチではSpreadSheetGear2010を導入した。

header.gif
『SpreadsheetGear 開発者ライセンス(サブスクリプション付き)』の購入で139,650円。
ちなみにサブスクリプションの更新に年額73,500円かかる。


こいつのスゴイ所は


1.アプリケーション実行環境にExcelがインストールされてなくても良い。

2.100%マネージ コードで作成されているのでメモリ解放漏れなどがない。

3.とにかく処理が早い。


おまけに

WindowsアプリだけでなくASP.NETなどのWEBアプリへの組み込みも可能な上、
GrapeCity社の開発支援アプリの様なサーバーラインセンス費用が別途かからない。
(GrapeCityは1サーバー導入に10万以上かかる。)

また、
COMオブジェクトを操作してExcelを制御する方法と、
極めて近い方法でコーディングが可能。


なのである。

実際、とあるシステムのExcel出力機能を、
COMオブジェクト制御から
SpreadSheetGear制御にソースコードを書き替えるのに
10分ほどしかかからなかった。


で、今まで7分以上かかっていたExcel作成時間が、2秒になった。
あくまでオブジェクトをExcelからSpreadSheetGearに変えただけであり、
基本的なロジックは変わっていない。

なんぞこれ?(^^;


貧弱なソフトウェアハウスとしては、
高速なExcel作成機能を提供できる、と言うのは、
強力な付加価値となるのではないだろうか。


いや、なったらいいな?(希望的観測


唯一の弱点は、GrapeCity製品と比べてマイナーで、
WEBを調べても全くと言って良いほど情報が無い事、かな?
まぁ、そこはサブスクリプションでカバーするしか無い。
(サブスクリプションには、1年間の無償アップグレード、
 日本語 E-Mail サポート、開発元 (米国 SpreadsheetGear 社) からの
 電話サポート (英語のみ)
が含まれる。もう何回もメールした(^^;)


っと、2011年版が発売しなかったSpreadSheetGear。
ちょっと気になったので米国の開発元に問い合わせてみた所、こんな回答を得た。


SpreadsheetGear 製品の開発状況について、現在のところ、
次期メジャーバージョンは、今年の前半にリリースが予定されている。

次回のメジャーリリースで予定されている新機能は以下になります。
- Silverlight / WPF 対応コントロール
- マルチコア CPU に対応したマルチスレッド再計算によるパフォーマンス向上
- 32-bit/64-bit 環境におけるメモリ使用の最適化
- Excel 2007 で追加されたビルトイン関数のサポート
(IFERROR、SUMIFS、AVERAGEIF、AVERAGEIFS、COUNTIFS など)
- Silverlight および WPF コントロールでのリッチ テキストの描画機能




どうやらしばしサブスクリプションの更新が続きそうである。




COMオブジェクトを制御してのExcelの遅さに辟易している方は、
本当に激速になるので
公式サイトから体験版でも導入して試してみてくださいな~。
きっと目から鱗ですぜ。

関連サイト
公式サイトXLSoft SpreadSheetGear2010





SpreadSheetGearではほぼ、Excelと同等の機能を有しているし、
本家Excelで出来ない事も出来るが、
一部、本家で出来るがこちらで出来ない機能もある。

参考までに、Naotenが発見したそれらを書きだしておく。

・シェイプ、イメージのコピー
 レンジやシェイプそのものを指定してのコピーに対応していない。
 生成することは可能なので、生成して関連プロパティの総コピーか、
 シートコピーする際は、そのシートに所属されるシェイプもコピーされるので、
 どちらかで対応するしか無い。

・単一セル内で複数のフォント書式が使えない。
 例えば、Excelで以下のようなセルがあるとする。
  
名前(必須


 名前、と書いてあるセル内に必須と赤文字で書いてあるが、
 これがSpreadSheetGearでは再現できない。

 そう言ったExcelファイルを読み込むと以下となる。
  
名前(必須)


シェイプやイメージのコピーに関しては
「将来的には対応する予定ですが、明確な時期については未定です。」
と問い合わせに回答を受けているのでいつかは可能?
単一セル内の複数書式に関しては聞いてないから不明。

 

コメント
コメントを投稿
名前
タイトル
メール
URL
コメント
パスワード
管理者にだけ表示を許可する


トラックバック

この記事のトラックバックURL
 

この記事にトラックバックする (FC2 blog user only!)
 
この記事へのトラックバック


カレンダー
プルダウン 降順 昇順 年別

10月 | 2019年11月 | 12月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


カウンター
AMAZON
  ご入用の際は是非、こちらから!

記事検索フォーム
シリーズまとめ
アナログゲームライフロゴ
アナログゲームライフ
 ボードゲームやカードゲームを楽しく遊ぶ
 嗜好で至高な思考の日々。

艦これ戦記
艦これ戦記
 勝利を信じて戦った艦娘と提督、
 そして戦友(とも)達との物語。

MH3(トライ)冒険記
MH3(トライ)冒険記
 ココットの牙Naotenと、
 その仲間達の冒険の軌跡。

魔界通信(マカ通)
勇者のくせになまいきだ:3D
魔界通信(マカ通)

 破壊神様と私、こと魔王の
 愛と憎しみと酒と泪と男と女の物語。

Oblivion日記
Oblivion日記 (MANAの冒険)
 オブリビオンの世界から愛を込めて。
 冒険者MANAが綴るオリジナルの物語。

リンク
Sound Optimize
我が親友2x4氏のサイト。
ゲーム音楽等に使用するのにぴったりな楽曲を著作権フリーで使えるシリーズ、「Sword & Magic - 剣と魔法の世界」を展開中。
試聴も出来るので是非、サイトへ足をお運び下さい!また、氏のブログはディープな話題でいっぱい!
ブログはこちら→SineWaveに乗せてって
人気ページランキング