3

C#.netWebアプリを持っています。ユーザーがWebページのボタンをクリックし、サーバーがExcelスプレッドシートを開いてデータを書き込み、ユーザーがドキュメントを保存するようにします。これは、Visual Studio2010とOffice2010を使用してローカルで機能します。ただし、サーバーでは、次のエラーが発生します。

System.Runtime.InteropServices.COMException(0x80080005):CLSID {00024500-0000-0000-C000-000000000046}のコンポーネントのCOMクラスファクトリの取得に失敗しました。次のエラーが原因です:80080005サーバーの実行に失敗しました(HRESULTからの例外:0x80080005(CO_E_SERVER_EXEC_FAILURE ))。

私は調査して、dcomconfigを開き、MicrosoftExcelアプリケーションへのアクセス許可を持つユーザーを追加することを示す多数の回答を見つけました。私のサイトはパススルーセキュリティに設定されているので、自分自身を追加しました。私はサーバーの管理者なので、管理者がアクセスできるようにしました。また、ネットワークサービスのデフォルトのアプリプールを追加しました。また、ASP.NETマシンアカウント。念のため、データベースに接続するときにアプリが使用するアカウントを追加しました。それでもまったく同じエラーが発生します。

私のサーバーは64ビット、Office 2007、IIS7です。

私のコードは次のとおりです。

    {
        try
        {
            Excel.Application xXL = null;
            Excel.Workbook xWB = null;
            Excel.Worksheet xSheet = null;
            xXL = new Excel.Application();
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }
4

2 に答える 2

5
  1. DCOMCNFG で、マイ コンピュータを右クリックし、プロパティを選択します。
  2. コンポーネント /MyComputer/DCOMConfig に移動します
  3. Microsoft Excel アプリケーション プロパティ セキュリティに移動します。
  4. 起動とアクティベーションのアクセス許可で、[カスタマイズ] をクリックしてネットワーク サービスを追加し、「ローカル起動」と「ローカル アクティベーション」のアクセス許可を付与します。アクセス許可と構成許可と同じものを与える [OK] を押すと、それだけです。今すぐアプリケーションを実行できます。
于 2015-11-06T05:57:49.290 に答える
2

Office オートメーション (これらの Excel.Application および Excel.Workbook オブジェクトの使用) は推奨されておらず、Microsoft によってサポートされていません。見て:

Office が不安定な動作を示したり、/または、この環境で Office を実行するとデッドロックが発生します。

これは、サーバー側/クライアント側の問題を整理したとしても、まだ火遊びをしていることを意味します.コンソール ユーザーがサーバーにログオンしていない場合、Excel はポップアップ通知を開こうとします。私を信じて、それをしないでください。

私が提供したリンクには、あなたがやろうとしていることのいくつかの代替案がリストされていますが、ユーザーのために比較的単純な Excel シートを作成することを計画していると仮定すると、CSV ファイルを作成し、それをユーザーに送り返すことをお勧めします。Response.ContentType="application/vnd.ms-excel"返されたデータが既定で Excel によって開かれるように、適切なヘッダー (のようなもの)。この質問に対するその他の回答は、こちらでご覧いただけます

于 2013-02-05T20:23:39.197 に答える