質問

私たちは、ASP.NETのWebサービスにXLSにSpreatSheetMLを変換するために、Excelを使用しています。ユーザーが右のチェックボックスをチェックした場合また、私たちは、スプレッドシートを印刷するために、Excelを使用してスレッドを生成します。

最近、我々は新しい環境でアプリケーションを展開している、と我々は問題がある開始しました:誰かが印刷しようとする最初の時間を、Excelは、サーバー上でハングアップするようです - ワークブックのPrintOutメソッドの呼び出しすなわち、決して戻ってます。

しかし、我々はアプリケーションプールIDとオープンExcelなどのサーバーにログインしている場合、プリンタに何かを送信し、印刷が!で、その後から動作します、再びそれを閉じます。

私は、Excelがinvisible dialogを示していると思われる - 私たちは、それ以前のExcelが上で失速するように見えた時間を過ごしたような症状が同じであるExcelを開いたときに登場-dialogを「リンクと埋め込みオブジェクトを使用することはできません」

私は、サーバー側のオフィスオートメーションを使用することが悪いことを知っているが、これは変更することが非常に困難であるレガシーアプリなので、私たちのソリューションを再設計するために私に助言しないでください。

は、誰もが行動のこの種のいずれかの経験があったか?

役に立ちましたか?

解決

まあ、誰もがこの問題を抱えているようです。

本当に奇妙なことは、私の夜の仕事(通常NETの.exeファイル)は、印刷の完全に可能であることである - それは、この問題を持っているだけで私のWebサービスです。

だから、私はずっと前にやるべきものを実行して問題を解決した:私は<のhref =「http://code.google.com/p/topshelf/」のrel = "nofollowをnoreferrerを持つ単純なWindowsサービスを作りました一部のMSMQメッセージに応答して印刷を行い、その後、私のWebサービスは、メッセージキューを経由してプリントアウトを注文することができます「> Topshelf を、ます。

あらゆる方法で非常に良く!

他のヒント

私は、PDF形式にOfficeドキュメントを印刷するには、Webサービスにおける相互運用機能を通じてマイクロソフトエクセル、ワードやパワーポイントを使用して問題のない終わり(パフォーマンスの低下、プロセスをぶら下げ、プロセスなどをクラッシュ)を持っていませんしました。私も、私は疑うの問題が原因で目に見えないダイアログボックスである直面している(おそらくファイルが破損して、読み取り専用の推奨は、ファイルがパスワード保護された、または何でもあり、設定されていた)きます。

私は、Officeを使用していない利用可能なツールがあります知っているが、彼らは非常に高価です。私のソリューションは、OpenOfficeのを自動に切り替えることでした。 OpenOfficeのは、はるかに安定しているようだ、と私は吊りプロセスを離れ、背後のようなきます。

だから、私は、私はあなたが自動化を完全に放棄することを示唆していないよ「のMicrosoft Officeを自動化していない」と言っていたとしながら、私は、Microsoft Office以外のOpenOfficeを自動化するの多くののより多くの成功を持っていただけのこと。

スプレッドシートギア.NET のXLSを読んだり、ワークブックをXLSXといずれかを表示せずにデフォルトのプリンタに印刷することができますすることができますダイアログボックス(WorkbookView.Print()メソッドを参照してください)。

あなたは評価をダウンロードすることができますここを。

免責事項:私は自分のスプレッドシートギア社

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

しかし、あなたは足で自分を撮影していないについて知りたくない、そう言って、もう少しがあると述べました。あなたは以前の愚かさの結果によって捕捉されるようです。

<時間>

あなたは聞いたことがあればOK、私を停止のこのの1:

男はStackOverflowの上の質問をします。彼は、「私はサービス内からOfficeアプリケーションを自動化する際にSO、悪いものが起こる」、と言います。だから、ジョン・サンダースは言う、「だから、サービス内からOfficeアプリケーションを自動化していない。マイクロソフトが行われることを意図して、デスクトップアプリケーション内から、それを自動化します。」

要求は、Excelを必要とする何かのためになると、

は、Windowsフォームアプリケーションを実行するプロセスを作成する必要があります。アプリケーションは窓なしで開始する必要があります。または、の<のhref = "http://msdn.microsoft.com/en-us/library/bb892075%28VSの文脈でそれを起動する必要があるかもしれません。 85%29.aspx」のrel = "nofollowをnoreferrer">リモートデスクトップのの接続。いずれの場合においても、実行されるタスクは、コマンドラインパラメータとして渡すことができる、又はプログラムは、それに送信されたコマンドを有するようにWCFサービスをホストすることができます。

このプログラムは、Excelが呼ばれることを期待するだけのようExcelを呼び出すことができます。それはおそらくさえ(一度に1)Excelに複数のコマンドを処理することができます。それがハングする場合は、プロセスが殺され、別の1を起動することができます。

私はこれを試したことはありませんが、それはそれが行うように設計されていなかった何かをするオフィスオートメーションを取得しようとしているよりも良い仕事と同じように音が鳴ります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top