none
ASP .NETでの Excelファイル出力 RRS feed

  • 質問


  • -プログラムの動作要件 (WindowsServer2008 R2/WindowsXP SP3)
    - 開発ツール、テクノロジ (Microsoft Visual Studio 2008/.NET Framework 3.5/C#)
    - ビジネス フェーズ (実装、検証)
    - 内容
      サーバ(WindowsServer2008 R2)-クライアント(WindowsXP SP3)のアプリケーションシステムを、
    .NET Framework 3.5/C# を使って、Microsoft Visual Studio 2008上で開発しています。
    サーバ-クライアント間の通信にはWCFを使用しています。

    このシステムでは帳票をExcelファイルとして出力する機能がありますが、
    サーバアプリケーション(サービス)から、Microsoft.Office.Interop.Excel.Application
    を使用してExcelファイルにアクセスして、Open、編集、Closeするように実装しました。

    単体テストでは、正常に動作していましたが、結合テスト(本番相当の環境)では、
    Application.Workbooks.Openが失敗します。

    「Officeのサーバーサイドオートメーションについて」(http://support.microsoft.com/kb/257757/ja)
    を見て、「推奨もサポートもしていない」ことは理解しましたが、同サイトの代替案は

    期間的に無理なので他の方法を探しています。
    サービス上でExcelファイルを編集している部分を別exeとして切り出し、バッチでキックする等
    の方法が取れればよいのですが、現在のところうまくいっていません。

    当システムは、閉じられたネットワーク内で特定の少数ユーザが使用するシステムで、

    本番稼働後は保守SEが常駐するため、Excelの異常によりアプリケーションが異常終了しても
    その場で対処は可能です。(対話型にしなくても問題ない)
    また、Excel帳票編集のためにデータベースアクセスを行っており、クライアント-サーバ間
    の回線が細いため、Excel帳票編集部分をクライアント側へ移植することは不可能です。

    お手数をおかけして申し訳ありませんが、よろしくお願いします。





    2012年4月24日 2:09

回答

  • 1. 3rdパーティ製品でこういうのもあるので検討したほうがよいのではないでしょうか
    http://www.adv.co.jp/product/product_excelcreator2012.htm
    サービス(Windowsサービス?WCF?)でやるとどうなるかはわかりません。

    2. 失敗しても良い上、常駐SEさんもいて対処してもらえるなら、いっそのことその人がいるときに
    Excelファイルつくるアプリ起動してもらったらいいんじゃないでしょうか。

    私なら1.の方法を検討して大丈夫ならお金出してもらうと思います。
    全然直接的な回答でなくてすいません。

    もし直接的な回答も欲しいのであれば(回答があるかどうかはわかりませんが)
    > Application.Workbooks.Open
    でどういう例外が出るのか等、実装よりの情報も必要かと思います。
    • 回答の候補に設定 山本春海 2012年5月2日 6:28
    • 回答としてマーク 山本春海 2012年5月14日 9:01
    2012年4月24日 4:19
  • 帳票とありますので、ExcelではなくCrystal Reportsを使う方法はダメなのでしょうか? ASP.NETでExcelを扱うには、以下が参考になると思います。

    (参考)
    ASP.net WebサイトでクライアントにExcelを返す
    http://wintips.blog117.fc2.com/blog-entry-70.html


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 山本春海 2012年5月2日 6:28
    • 回答としてマーク 山本春海 2012年5月14日 9:01
    2012年4月24日 4:42
    モデレータ
  • これ、公開フォーラムでの質問投稿になっていますが、問題なかったんでしょうか?
    お困りの事象と、所属について誰でも閲覧できるようになっています。公開に差し支えないのであればよいのですが。
    また、Microsoft のエンジニアから回答がもらえる、パートナー向けのフォーラムに書きたかったのであれば、場所を間違えています。

    // 最近、MSDN Blogs でも扱われていましたね。
    // ライセンス問題とセキュリティ問題などで。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    • 回答としてマーク 山本春海 2012年5月14日 9:01
    2012年4月24日 14:01
    モデレータ

すべての返信

  • 1. 3rdパーティ製品でこういうのもあるので検討したほうがよいのではないでしょうか
    http://www.adv.co.jp/product/product_excelcreator2012.htm
    サービス(Windowsサービス?WCF?)でやるとどうなるかはわかりません。

    2. 失敗しても良い上、常駐SEさんもいて対処してもらえるなら、いっそのことその人がいるときに
    Excelファイルつくるアプリ起動してもらったらいいんじゃないでしょうか。

    私なら1.の方法を検討して大丈夫ならお金出してもらうと思います。
    全然直接的な回答でなくてすいません。

    もし直接的な回答も欲しいのであれば(回答があるかどうかはわかりませんが)
    > Application.Workbooks.Open
    でどういう例外が出るのか等、実装よりの情報も必要かと思います。
    • 回答の候補に設定 山本春海 2012年5月2日 6:28
    • 回答としてマーク 山本春海 2012年5月14日 9:01
    2012年4月24日 4:19
  • 帳票とありますので、ExcelではなくCrystal Reportsを使う方法はダメなのでしょうか? ASP.NETでExcelを扱うには、以下が参考になると思います。

    (参考)
    ASP.net WebサイトでクライアントにExcelを返す
    http://wintips.blog117.fc2.com/blog-entry-70.html


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 山本春海 2012年5月2日 6:28
    • 回答としてマーク 山本春海 2012年5月14日 9:01
    2012年4月24日 4:42
    モデレータ
  • ご回答ありがとうございました。

    実装方式については、今後検討したいと思います。

    2012年4月24日 5:44
  • ご回答ありがとうございました。

    実装方式については、今後検討したいと思います。

    2012年4月24日 5:44
  • これ、公開フォーラムでの質問投稿になっていますが、問題なかったんでしょうか?
    お困りの事象と、所属について誰でも閲覧できるようになっています。公開に差し支えないのであればよいのですが。
    また、Microsoft のエンジニアから回答がもらえる、パートナー向けのフォーラムに書きたかったのであれば、場所を間違えています。

    // 最近、MSDN Blogs でも扱われていましたね。
    // ライセンス問題とセキュリティ問題などで。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    • 回答としてマーク 山本春海 2012年5月14日 9:01
    2012年4月24日 14:01
    モデレータ
  • ご指摘ありがとうございます。

    所属等の情報は削除します。

    コンピテンシーが不足のため、こちらに書かせて頂きました。

    2012年4月25日 1:31
  •  なぜ、失敗するのか、その原因は突き止めているでしょうか。単体テストと結合テストで、何が違うのでしょう?その違いが、失敗の原因と考えられますよね。単体テストは開発環境で行い、結合でサーバに持って行った?
     「ユーザー ID」の段に書かれている様に、ユーザー プロファイルがないアカウントが使用されます。Excel 起動用のアカウントをサーバーに作成し、Excel を起動するときにそのアカウントに偽装すればどうでしょうか。


    Jitta@わんくま同盟

    2012年4月25日 12:17
  • こんにちは、SANTさん さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。

    みなさんから参考になるアドバイスをいただいているようでしたので、勝手ながら私の方で回答としてマークさせていただきました。
    アドバイスくださったみなさん、ありがとうございます。

    いただいた情報の中で、解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、ご協力よろしくお願いいたします。
    _____________________
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2012年5月14日 9:01