ASP.NETでエクセル操作 その1
ASP.NETでExcelインスタンスを生成するコードを書くと、Excelプロセスが残ってしまう現象にさんざん悩まされました。
ですが、きちんと解放コードを書くとプロセスが終了するようになりました。
技術的にも、ライセンス的にもいろいろと問題がありますので、Excelインスタンスを生成する方法以外のアプローチをお勧めしますが、どうしてもExcel使いたいという人のお役に立てば、参考までに・・・
ちなみにMicrosoftでは、Officeのサーバサイドオートメーションは推奨していません。
Office のサーバーサイド オートメーションについて
http://support.microsoft.com/kb/257757/ja
環境
OS: Windows Server 2003 / Windows XP Pro + IIS
エクセル:Excel 2000
言語:C# 2.0 ASP.NET 2.0※ASP.NETの実行ユーザを偽装します。
ASP.NETで偽装するユーザでエクセルのセットアップを完了する必要があります。
偽装ユーザでOSにログインして、正常にエクセルを起動できるようにしておきます。
また、VBAのエディット画面を表示するのもお忘れ無く。
まず、エクセルを使うにあたり、エクセルはCOMコンポーネントとして実装されているので、シートやセル(レンジ)などのオブジェクトにアクセスすると独自に参照カウンタをインクリメントします。参照カウンタは、.net frameworkのGCでは管理されないので、コードで明示的に参照カウンタをデクリメントする必要があります。
エクセルのオブジェクトにアクセスするときは、暗黙的な参照は行わず、アクセスしたいオブジェクトを変数に設定するように注意してください。
参照カウンタをデクリメントするには、
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)か
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obj)を呼び出す必要があります。
« 文字列から全角スペースを削除する | トップページ | ASP.NETでエクセル操作 その2 »
「03 web」カテゴリの記事
- ASP.NETでエクセル操作 その4(2008.08.18)
- ASP.NETでエクセル操作 その3(2008.08.15)
- ASP.NETでエクセル操作 その2(2008.08.14)
- ASP.NETでエクセル操作 その1(2008.08.13)
- ASP.NET AJAX AutoCompleteコントロール(2008.05.01)
コメント