- PR -

エクセルのダウンロードについて

投稿者投稿内容
ニック
会議室デビュー日: 2007/05/01
投稿数: 12
投稿日時: 2007-05-01 15:56
始めて投稿をさせていただきます。

開発環境は
・Visual studio 2005
・Asp.net
・windows2003server

教えていただきたいことはエクセルのダウンロードのプログラムを作っているのですが
うまくダウンロードが出来ないということです。
具体的にはエクセルを作成しダウンロードまではできるのですがダウンロードしたファイルを開こうとすると「ファイルが読込めません」というエラーメッセージが表示されます。
ファイルの内容をnotepadで見てみるとどうもwebページの内容となっているようです。
なぜ、なのでしょうか? 基本的なことを理解していないせいかもしれませんがご教授願います。

--------------------------------------サンプルコード----------------------------
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment; filename=" + "test.xls")
Response.Flush()
Response.WriteFile(作成したエクセルまでのフルパス+ファイル名)
Response.End()


コードというよりもその他設定のような気がするのですがいろいろと調べてみたのですが
分かりませんでした。
よろしくお願いします。



かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-05-01 16:13
引用:

ニックさんの書き込み (2007-05-01 15:56) より:

コード:

Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment; filename=" + "test.xls")
Response.Flush()
Response.WriteFile(作成したエクセルまでのフルパス+ファイル名)
Response.End()




WriteFile() でどのようにファイルのパスを指定していますか?
Server.MapPath() などで変換していますか?

WriteFile の前に Flush() してますが、何を Flush() しているんですか?

#追記
#あっフルパスって書いてある。。。
#パスのほうは無視してください。
_________________
かるあ のメモ
http://karua.at.webry.info/

[ メッセージ編集済み 編集者: かるあ 編集日時 2007-05-01 16:16 ]
ニック
会議室デビュー日: 2007/05/01
投稿数: 12
投稿日時: 2007-05-01 16:59
返信ありがとうございます。

Response.Flushについてですが、サンプルコードから持ってきたものを
そのまま記述してしまったためで、自分のサンプルコードのあの位置に入れても意味
ありませんよね。 writeの後ならまだしも・・・。
(ただ、入れていないコードでやっても結果は同じでした)

また、1回目はちゃんとできる場合がありますが2度目以降は必ず失敗します。
開放がちゃんとできていないのでしょうか? しているつもりなですが。

何がいけないのでしょうか?
再度、アドバイスをいただければと思います。



AMD286
常連さん
会議室デビュー日: 2007/04/27
投稿数: 23
お住まい・勤務地: 兵庫県
投稿日時: 2007-05-01 17:07
引用:

ファイルの内容をnotepadで見てみるとどうもwebページの内容となっているようです。



それはどういった内容ですか?
ニック
会議室デビュー日: 2007/05/01
投稿数: 12
投稿日時: 2007-05-01 17:18
>ファイルの内容をnotepadで見てみるとどうもwebページの内容となっているようです。

作成されたエクセルファイルをnotepadで開いてみるとwebページ(HTML)になっているのです。

「ファイルが読込めません」というメッセージが出る場合やエクセルを開くとwebに表示されている内容を無理にエクセルに読込み表示されている場合があったので試しにnotepadで開いてみたらwebページ(HTML)になっていたということです。

いろいろと調べた際にマイクロソフトのHPで以下のページを見つけました。
あまり関係ないように思えたのですが参考までに。
http://support.microsoft.com/kb/266263/

AMD286
常連さん
会議室デビュー日: 2007/04/27
投稿数: 23
お住まい・勤務地: 兵庫県
投稿日時: 2007-05-01 17:36
申し訳ないのですが、状況がサッパリ飲み込めません。

HTMLの内容は何ですか?
また、それは意図している結果なのですか?
取得されるファイルは静的ファイルですか?
ニック
会議室デビュー日: 2007/05/01
投稿数: 12
投稿日時: 2007-05-01 17:52
分かりづらく申し訳ありません。

>HTMLの内容は何ですか?
あるweb画面より検索条件を元にボタンを押下するとエクセルファイルを出力するwebページ(aspx)があるのですが、そのaspxファイルのソースコードです。

>また、それは意図している結果なのですか?
意図していません、単純にエクセル形式でファイル出力したいだけです。

>取得されるファイルは静的ファイルですか?
動的ファイルです。

意味が通じるでしょうか?
うまく伝えられずにすみません。





AMD286
常連さん
会議室デビュー日: 2007/04/27
投稿数: 23
お住まい・勤務地: 兵庫県
投稿日時: 2007-05-01 18:02
引用:

「ファイルが読込めません」というメッセージが出る場合やエクセルを開くとwebに表示されている内容を無理にエクセルに読込み表示されている場合があったので試しにnotepadで開いてみたらwebページ(HTML)になっていたということです。


その他の場合は、正しく取得できていたのですよね?
状況によってファイルの内容が変わっているということから考えると、Response.WriteFileするファイルを間違えているのではないですか?

どのような条件で「ファイルが読込めません」になったり「無理にエクセルに読込み表示され」るのかはわかりませんが。

ダウンロードするファイルのファイル名はtest.xlsになっていますよね。

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