none
Excel操作(改ページ位置追加)でCOMExceptionが発生します RRS feed

  • 質問

  • 2003serverにexcel2003をインストールし、aspxのボタンクリックイベントで
    excelインスタンスを起動し、テンプレートからxlsを作成して、クライアントにダウンロードさせています。
    開発環境はVWD2005, 開発言語はC#です。

    数種類の帳票を用意しているのですが、そのうち1つについて実行時エラー(COMException)が発生します。
    その帳票のみ、改ページが発生する可能性があるため、 HPageBreaks.Add() を用いて
    改ページ位置を設定しているのですが、そこでエラーが発生してしまいます。

    COM参照の解放忘れには対応しております。

    エラー原因を調べるため、VWDでデバッグを行なったところ、該当部分のコードでエラーが発生せず、
    正常に帳票が出力されます。
    このため原因が特定できず、困っております。

    よろしくお願いいたします。

    2006年6月30日 1:12

回答

  • 残念ながら現バージョンのすべての 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

    また、開発工数、テスト等のコストを考えますとサードパーティー製のコンポーネントを購入したほうが安い場合もありますので、ご検討いただければと思います。

     

    2006年7月10日 9:47

すべての返信

  • 開発サーバ上でエラーが発生せず、IIS上だとエラーになる、という場合は実行ユーザのアクセス権の問題がほとんどだと思います。
    その観点から調べられてはどうでしょうか。

    2006年6月30日 3:41
  • ご指摘ありがとうございます。

    私のように単一のコードでエラーとなるケースの場合、アクセス権が原因というのは考えづらいのかな・・・と思い、検証していませんでした。調べてみることに致します。

    2006年6月30日 5:39
  • 残念ながら現バージョンのすべての 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

    また、開発工数、テスト等のコストを考えますとサードパーティー製のコンポーネントを購入したほうが安い場合もありますので、ご検討いただければと思います。

     

    2006年7月10日 9:47