トップ回答者
Excel操作(改ページ位置追加)でCOMExceptionが発生します

質問
-
2003serverにexcel2003をインストールし、aspxのボタンクリックイベントで
excelインスタンスを起動し、テンプレートからxlsを作成して、クライアントにダウンロードさせています。
開発環境はVWD2005, 開発言語はC#です。数種類の帳票を用意しているのですが、そのうち1つについて実行時エラー(COMException)が発生します。
その帳票のみ、改ページが発生する可能性があるため、 HPageBreaks.Add() を用いて
改ページ位置を設定しているのですが、そこでエラーが発生してしまいます。COM参照の解放忘れには対応しております。
エラー原因を調べるため、VWDでデバッグを行なったところ、該当部分のコードでエラーが発生せず、
正常に帳票が出力されます。
このため原因が特定できず、困っております。よろしくお願いいたします。
回答
-
残念ながら現バージョンのすべての Microsoft Office は、クライアント ワークステーション上でエンドユーザー製品として実行するように設計、テストされており、サーバープロセスからの使用は想定されておりません。
また、弊社ではOffice のサーバーサイド オートメーションの推奨もサポートも行っていません。
詳細につきましてはお手数ですが以下のドキュメントの内容をご参照ください。文書番号 : 257757
タイトル : Office のサーバーサイド オートメーションについて
URL : http://support.microsoft.com/kb/257757/ja/ASP の時代から、Office をサーバーサイドで使用して問題が発生するというお問合せは数多くあります。
もし、処理の内容がBook 内のデータ編集程度で済むのであれば ADO.NET をご使用ください。
また、簡単な Sheet の操作であれば、コンテンツの出力の際に MIME を変更することにより IIS からのレスポンスをクライアントブラウザに Excel 形式のファイルと認識させることができます。例 VB.NET ) ASP.NET の出力を Excel 形式のファイル TEST.xls として出力
(※)ただし、ブラウザとのエンコード形式の違いによりファイル名に全角文字は使用できません。
With Response
.Clear()
.ContentType = "application/vnd.ms-excel"
.AddHeader("content-disposition", "attachment; filename=""TEST.xls""")
.Write("<html><head></head><body><form><table border=1 BORDERCOLOR=""red""><tr><td BGCOLOR=""gainsboro"">テストです</td></tr></table></form></body></html>")
End With
その他、参考
==========
文書番号 : 316934
タイトル : Visual Basic .NET と ADO.NET を使用して Excel ブックのレコードの取得と変更を行う方法
URL : http://support.microsoft.com/kb/316934/ja文書番号 : 306572
タイトル : ASP.NET、ADO.NET、および Visual C# .NET による Excel データの取得と表示方法
URL : http://support.microsoft.com/kb/306572/ja文書番号 : 311731
タイトル : ASP.NET、ADO.NET、および Visual Basic .NET による Excel データの取得と表示
URL : http://support.microsoft.com/kb/311731/ja文書番号 : 306022
タイトル : Visual Basic .NET を使用してデータを Excel ブックに転送する方
URL : http://support.microsoft.com/kb/306022/ja文書番号 : 306023
タイトル :Visual C# .NET を使用してデータを Excel ブックに転送する方法
URL : http://support.microsoft.com/kb/306023/jaまた、開発工数、テスト等のコストを考えますとサードパーティー製のコンポーネントを購入したほうが安い場合もありますので、ご検討いただければと思います。
すべての返信
-
残念ながら現バージョンのすべての Microsoft Office は、クライアント ワークステーション上でエンドユーザー製品として実行するように設計、テストされており、サーバープロセスからの使用は想定されておりません。
また、弊社ではOffice のサーバーサイド オートメーションの推奨もサポートも行っていません。
詳細につきましてはお手数ですが以下のドキュメントの内容をご参照ください。文書番号 : 257757
タイトル : Office のサーバーサイド オートメーションについて
URL : http://support.microsoft.com/kb/257757/ja/ASP の時代から、Office をサーバーサイドで使用して問題が発生するというお問合せは数多くあります。
もし、処理の内容がBook 内のデータ編集程度で済むのであれば ADO.NET をご使用ください。
また、簡単な Sheet の操作であれば、コンテンツの出力の際に MIME を変更することにより IIS からのレスポンスをクライアントブラウザに Excel 形式のファイルと認識させることができます。例 VB.NET ) ASP.NET の出力を Excel 形式のファイル TEST.xls として出力
(※)ただし、ブラウザとのエンコード形式の違いによりファイル名に全角文字は使用できません。
With Response
.Clear()
.ContentType = "application/vnd.ms-excel"
.AddHeader("content-disposition", "attachment; filename=""TEST.xls""")
.Write("<html><head></head><body><form><table border=1 BORDERCOLOR=""red""><tr><td BGCOLOR=""gainsboro"">テストです</td></tr></table></form></body></html>")
End With
その他、参考
==========
文書番号 : 316934
タイトル : Visual Basic .NET と ADO.NET を使用して Excel ブックのレコードの取得と変更を行う方法
URL : http://support.microsoft.com/kb/316934/ja文書番号 : 306572
タイトル : ASP.NET、ADO.NET、および Visual C# .NET による Excel データの取得と表示方法
URL : http://support.microsoft.com/kb/306572/ja文書番号 : 311731
タイトル : ASP.NET、ADO.NET、および Visual Basic .NET による Excel データの取得と表示
URL : http://support.microsoft.com/kb/311731/ja文書番号 : 306022
タイトル : Visual Basic .NET を使用してデータを Excel ブックに転送する方
URL : http://support.microsoft.com/kb/306022/ja文書番号 : 306023
タイトル :Visual C# .NET を使用してデータを Excel ブックに転送する方法
URL : http://support.microsoft.com/kb/306023/jaまた、開発工数、テスト等のコストを考えますとサードパーティー製のコンポーネントを購入したほうが安い場合もありますので、ご検討いただければと思います。