2016-05-11 22 views
0

私のコードでは、Microsoft.Office.Interop.Excel.dllを使用してExcelレポートを生成しています。Office Interop Excel DisplayAlerts = falseがアクティブ化ポップアップで動作していません

しかし、例外が

System.Runtime.InteropServices.COMException(0x800AC472)として来ている実行時に:HRESULTからの例外 :0x800AC472

ライン上((xls.Range)worKsheeT.Cells[3, 1]).Font.Bold = true;

これをチェックすると、アプリケーションがこのコードの実行後に来るExcel 2013のアクティベーションポップアップの応答を待っているため、このエラーが発生していることがわかりました。ポップとして

enter image description here

明確に私たちは、サーバー上でエクセルの評価版を持って示しているが、私の質問は、私たちは、C#からのポップアップを抑制し、Excelレポートを生成するために、評価版を使用することができます任意のチャンスがある、ということです??

+2

FYIでは、サーバーでOffice interopオブジェクトを使用しないでください。これらはクライアントアプリケーション用に特別に設計されたもので、サーバーアプリケーションで使用するとさまざまな問題を引き起こす可能性があります。マイクロソフトでは、サーバーアプリケーションでの使用を推奨またはサポートしていません。[Officeのサーバー側の自動化に関する考慮事項](https://support.microsoft.com/en-us/kb/257757)。 –

+0

私はクリントの言うことに同意します。サーバー側のレポートを生成する場合は、アプリケーションを自動化するのではなく、Office Open XMLファイル形式を活用する必要があります。これは、これらのファイル形式が...のために設計されたものです。 –

+1

アプリケーションをアクティブ化してみませんか?確かに活性化する必要性を抑制する方法はありません... –

答えて

1

代わりにOpen XML SDKを使用することをおすすめします。詳細については、Welcome to the Open XML SDK 2.5 for Officeを参照してください。

バイナリファイル形式に対処する必要がある場合は、サービス側の実行用に設計されたサードパーティのコンポーネント(Asposeなど)の使用を検討することもできます。

マイクロソフトでは現在、オフィスで発生する可能性があるため、無人で非対話型のクライアントアプリケーションまたはコンポーネント(ASP、ASP.NET、DCOM、およびNTサービスを含む)からMicrosoft Officeアプリケーションの自動化を推奨しておらず、サポートしていません。この環境でOfficeを実行すると不安定な動作やデッドロックが発生する可能性があります。

サーバー側のコンテキストで実行されるソリューションを構築する場合は、無人で実行するために安全にされたコンポーネントを使用するようにしてください。または、コードの少なくとも一部がクライアント側で実行できるようにする代替手段を見つけようとする必要があります。サーバー側のソリューションからOfficeアプリケーションを使用する場合、アプリケーションには正常に実行するために必要な機能が不足しています。さらに、全体的なソリューションの安定性でリスクを冒すことになります。詳細については、Considerations for server-side Automation of Officeの記事をご覧ください。

関連する問題