1

Excel を使用して、ASP.NET Web サービスで SpreatSheetML を XLS に変換しています。さらに、ユーザーが正しいチェックボックスをオンにすると、Excel を使用してスプレッドシートを印刷するスレッドが生成されます。

最近、アプリを新しい環境に展開したところ、問題が発生し始めました。最初に印刷しようとすると、Excel がサーバーでハングしているように見えます。つまり、PrintOutワークブックのメソッドへの呼び出しが返されません。

しかし、アプリケーション プール ID としてサーバーにログインし、Excel を開き、何かをプリンターに送信して、もう一度閉じると、それ以降は印刷が機能します。

Excel が表示されていると思われますinvisible dialog- 症状は以前と同じで、Excel を開いたときに表示された「オブジェクトのリンクと埋め込みを使用できません」というダイアログで Excel が停止したように見えました。

サーバー側の Office オートメーションを使用するのが悪いことはわかっていますが、これは変更が非常に難しいレガシ アプリであるため、ソリューションを再設計するようにアドバイスしないでください。

この種の行動を経験した人はいますか?

4

4 に答える 4

1

まあ、誰もこの問題を抱えていなかったようです。

本当に奇妙なことは、私の夜の仕事(通常の.NET .exe)が完全に印刷できることです。この問題を抱えているのは、私のWebサービスだけです。

そこで、ずっと前にすべきことを実行して問題を解決しました。Topshelfを使用して単純なWindowsサービスを作成しました。これは、いくつかのMSMQメッセージに応答して印刷を実行し、Webサービスはメッセージキューを介して印刷を注文できます。

あらゆる点ではるかに優れています!

于 2009-06-10T18:39:18.300 に答える
1

Webサービスの相互運用機能を介してMicrosoftExcel、Word、およびPowerPointを使用してOfficeドキュメントをPDF形式に印刷することで、問題(パフォーマンスの低下、プロセスのハング、プロセスのクラッシュなど)に終わりはありませんでした。私も、ダイアログボックスが表示されないことが原因であると思われる問題に直面しました(ファイルが破損している、読み取り専用が推奨されている、ファイルがパスワードで保護されているなど)。

Officeを使用しないツールがあることは知っていますが、非常に高価です。私の解決策は、OpenOfficeの自動化に切り替えることでした。OpenOfficeの方がはるかに安定しているようで、ハングしたプロセスなどを残しました。

したがって、「Microsoft Officeを自動化しないでください」と言っていると思いますが、自動化を完全に放棄することを提案しているわけではありません。ちょうど私がMicrosoftOfficeよりもOpenOfficeの自動化にはるかに成功したということです。

于 2009-09-08T08:50:38.773 に答える
-2

多くの人と同じように、私この種の行動を見てきました。これは、サーバー、特にマルチスレッド ASP.NET アプリケーションで Office API を使用することによって発生します。

しかし、あなたは自分の足を撃たないことについて知りたくないと言ったので、これ以上言うことはありません. あなたは以前の愚かさの結果にとらわれているようです。


わかりました、これを聞いた場合は止めてください:

男性が StackOverflow で質問します。彼は、「サービス内から Office アプリケーションを自動化すると、悪いことが起こる」と述べています。そのため、John Saunders は次のように述べています。

Excel を必要とする要求が届いた場合は、Windows フォーム アプリケーションを実行するプロセスを作成する必要があります。アプリケーションをウィンドウなしで開始する必要がある場合や、リモート デスクトップ接続のコンテキストでアプリケーションを開始する必要がある場合があります。いずれの場合も、実行するタスクをコマンド ライン パラメーターとして渡すか、プログラムで WCF サービスをホストしてコマンドを送信することができます。

このプログラムは、Excel が呼び出されることを想定しているように、Excel を呼び出すことができます。おそらく、Excel に対して複数のコマンドを (一度に 1 つずつ) 処理することもできます。ただし、ハングした場合は、プロセスを強制終了して別のプロセスを開始できます。

私はこれを試したことはありませんが、Office オートメーションに設計されていないことを実行させるよりもうまくいくようです。

于 2009-08-04T22:11:56.383 に答える