7

私は、ユーザーが毎月のスタッフの不在を Microsoft Excel にエクスポートできるようにする ASP.NET アプリケーションを使用しています。アプリケーションは現在、次の例外を生成しています

例外: ActiveX コンポーネントを作成できません。

次のスタックトレースで

System.Exception: ActiveX コンポーネントを作成できません。H:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2\Time\ManagerSummary.aspx.vb:line の HR.ManagerSummary.ExportToExcel() で Microsoft.VisualBasic.Interaction.CreateObject (文字列 ProgId、文字列 ServerName) でH:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2\Time\ManagerSummary.aspx.vb の HR.ManagerSummary.btnExcel_Click (オブジェクト送信者、EventArgs e) の 935: System.Web.UI.WebControls の 891 行System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) の .Button.OnClick(EventArgs e) System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) の System .Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) System.Web.UI.Page.

コードは CreateObject 行で失敗します。

    'Create the Excel object
    Dim objXL As Object = CreateObject("Excel.Application") ' New Microsoft.Office.Interop.Excel.Application
    Dim objWB As Object = objXL.Workbooks.Add
    Dim objWS As Object = objWB.Worksheets(1)

Microsoft Excel アプリケーションの DCOM 構成で IUSR_ アカウントのアクセス許可を設定しましたが、問題は解決しませんでした。どんなアイデアでも大歓迎です。

乾杯

ジェームズ

4

3 に答える 3

7

ASP.NET アプリケーションを新しいハードウェアに移行した後、この問題をさらに調査し、解決策を見つけました。

この問題を解決するには、管理ツールから「コンポーネント サービス」を開き、次のように移動します。

  • コンポーネント サービス -> コンピューター -> マイ コンピューター -> DCOM 構成 -> Microsoft Excel アプリケーション
  • Microsoft Excel アプリケーションを右クリック -> [プロパティ] -> [セキュリティ] タブ
  • 「起動とアクティベーションのアクセス許可」のカスタマイズをクリック -> 編集 -> 追加
  • 「NETWORK SERVICE」と入力し、「名前の確認」をクリックし、「OK」をクリックします
  • 「NETWORK SERVICE」の「Local Launch」と「Local Activation」を許可し、「OK」をクリックします。
  • 「アクセス許可」のカスタマイズを選択 -> 編集 -> 追加
  • 「NETWORK SERVICE」と入力し、「名前の確認」をクリックし、「OK」をクリックします
  • 「ネットワーク サービス」の「ローカル アクセス」を許可し、[OK] をクリックします。
  • [OK] をクリックします。

ASP.NET アプリケーションは、エクスポートされたデータを含む Microsoft Excel ワークシートを正常に作成できるようになりました。

于 2012-03-15T14:51:48.593 に答える
0

SpreadsheetGear for .NETを使用すると、xls および xlsx ワークブックを IWorkbook.SaveToStream を使用して応答ストリームに直接保存できます。すべて安全に管理された C# コードであるため、管理者として何かを実行する必要はなく、ASP.NET サーバーで Excel COM Interop がもたらす問題に遭遇することもありません。

SpreadsheetGear を使用した簡単な ASP.NET Excel Reporting サンプル (C# および VB) をここで確認できます。自分で試してみたい場合は、ここから無料試用版をダウンロードしてください。

免責事項: 私は SpreadsheetGear LLC を所有しています

于 2009-12-07T15:03:03.843 に答える
0

サーバーに ActiveX を登録しましたか?

http://support.microsoft.com/kb/146219

于 2009-12-04T15:14:57.830 に答える