@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Excelファイルのクライアントへの送信

1
投稿者投稿内容
nora
会議室デビュー日: 2002/12/16
投稿数: 13
投稿日時: 2003-03-02 12:49
ASP.NETでWebアプリを作成しています。
(サーバ)Windows2000Server + Excel 2002
(クライアント)Windows 2000Pro + IE 6.0,5.0 + Excel 2002

クライアントからの要求により、サーバ側で要求に応じたExcelファイルを作成、xlsファイルをクライアントブラウザ(IE)に送信する処理を作成しています。

 クライアントブラウザ(IE限定)はフレームにきったページで、そのうちの1フレーム内にExcelシートが表示されてほしいのですが、その際次の問題が発生しています。

1.クライアントマシン環境によってはExcelファイルの内容が表示されず、バイナリデータ(?)がそのままテキストとして表示されてしまう場合がある。

2.Excelのメニュー、ショートカットアイコンなどが表示されてほしいが、表示されない。

※Response.Redirect(Excelファイルのurl) 'でフレーム内ページを表示させています。

−−−
1.については、クライアントブラウザが、IE6の場合は正常にExcelが表示される/IE5の場合は表示されない、ということは確認できましたが、それが本質的な原因なのかわかりません。
2.については、フレームをきっていないページであれば、ブラウザのメニューがExelメニューと混在する形で組み込まれることは確認できました。ただし、印刷プレビューが不可、印刷は可、と機能により可否があるようです。

ブラウザ(IE)内に直接Excelを開かせるための条件や設定があるのでしょうか?
また、フレーム内に表示させた場合、Excel機能へアクセスするためのメニューやアイコンを表示させる方法はないのでしょうか? また、機能によって使えない機能はあきらめるしかないのでしょうか?特に印刷プレビューができないのが痛いのですが・・・。

以上、なにかご存知の方、アドバイスをよろしくお願いします。
nora
会議室デビュー日: 2002/12/16
投稿数: 13
投稿日時: 2003-03-03 00:31
1.については、クライアント端末のブラウザを、IE5からIE6にすることで、正常に表示されるようになりました。(根本的な原因は不明ですが)

ただし、いろいろやっていて少し気になった点がありましたので覚え書きします。現時点でこれ以上この現象を解決している時間がないのでなにかのご参考までに。

Response.Redirectで直接xlsファイルへクライアントを飛ばすのではなく、明示的にExcelファイルであることをクライアントに送ってみたらどうかと思って、ヘルプを参考に、

Response.ContentType = "Application/x-msexcel"
Dim FilePath As String = MapPath("test.xls")
Response.WriteFile(FilePath)
Response.End()

とやってみたところ、今度は"test.xls"の中身が正常に表示される端末と、空のシート名がtestとなって空のシートが表示される端末が出てきました。
内容としては、前者の方が正常に動作していることになり、後者はなぜそうなってしまうのかが不明です。

−−−
2.については、シート上にマクロを記述してアイコンを表示させる方法は可能だということは確認しましたが、いずれにしても、印刷プレビューが使えないし、マクロを書くのもスマートではない気がします。最悪マクロで対処するとしても、もう少しなにかよいアイデアはないでしょうか?

引き続きよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)