C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 22 を表示中)
■9303 / )  Re[6]: 「セッション状態要求をセッション状態・・・」エ
□投稿者/ 向井 (10回)-(2007/10/24(Wed) 14:24:48)
ご回答ありがとうございます。

> もしかして、サーバサイドで Excel を操作しておられるのでしょうか?

そうなんです。これもそうする以外に方法がありませんでした。
Webアプリケーションで帳票出力する場合、
何か別の手段で対応されている方がいらっしゃれば教えてください。
マクロを仕込んだExcelをダウンロードさせて、
ファイルを開いた際に実行するのでしょうか?

> たとえば、エラーメッセージや確認ダイアログ等の、なんらかの表示等が行われていた場合、
> そのメッセージに応答するまで、Excel は次の動作を受け付けません。(メソッド呼び出しが失敗します)

Excel出力は正常に終了していますので、このような事はなかったのではないかと思っています。

> あるいは、あるメソッド呼び出しなどに対して、時間のかかる複雑な(または大量の)処理
> ――たとえば印刷位置の調整や、セル値の再計算、条件付き書式など――が発生するような場合、
> その処理が終わるまでの間、呼び出し側の処理がブロックされるため、これが
> 負荷を高めてしまう要因となるかも知れません。

そういうことが高負荷になる原因だったのですか。
これは盲点でした。ありがとうございます。
セル値の再計算や条件付き書式は設定していないと思うので大丈夫だと思いますが、
印刷設定は次のようにしてありますので調整が入っていそうな気がします。
・「次のページ数にあわせて印刷」にON(横1×縦1)(=つまり、帳票が1ページに収まるよう設定)
・「ページ中央」の「垂直」「水平」どちらもON

この設定はこれまでExcel出力処理の最初に行っていました。
なので、その後の各セルへの書き込みなど各種処理が実行される度に
印刷位置の調整が行われていたのだと推測します。

で、この設定をExcel出力の最後にするよう変更してみたのですが、
パフォーマンスに変化はありませんでした。
CPUも処理中は常に100%です。

ご指摘には非常に納得できただけに、改善できないのが非常に歯がゆいです。
対応がまずかったでしょうか。

私の中ではExcel出力時にCPU100%になることは仕方ないことだと思い込んでいたのですが、
そうではないのでしょうか。

返信 編集キー/


管理者用

- Child Tree -