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

CSVのダウンロードについて

1
投稿者投稿内容
うらただ
会議室デビュー日: 2003/02/11
投稿数: 1
投稿日時: 2003-02-11 10:33
初めて投稿します。
現在、ASP.NETとC#でwebアプリの開発を行っているのですが、
ボタンを押下されたタイミングでCSVファイルを作成し保存のダイアログボックスを
表示したいのですがどのようにすればよろしいのでしょうか。
また、その場合には内部的にファイルを作成しなくてはいけないと思っていたのですが
セッションが切れたタイミングで削除することは出来ますか。
他に良い方法があれば教えていただけると幸いです。
初歩的な問題かもしれませんがよろしくお願いいたします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-02-11 17:02
今日は休みなので、実験してみて本当にその通りに動くという確認は取れないのですが、こんなのはどうかという事で書いてみます。

1.CSVファイルを作成
は、System.IO内のクラスなどでできませんか?ASP.NETではファイルを作れない?

2.保存のダイアログボックスを表示
もしかするとHTTPレスポンスのヘッダ等で「ダウンロードしろ」などの指定ができるのかもしれませんが分かりません。
クライアントが動いているマシンにExcel等がインストールされていないなら、Page.Response.ContentTypeプロパティで設定できるメディアタイプをtext/comma-separated-valuesにするとダイアログが出るかも。
Excel等がインストールされているならtext/downloadにするとか。
それでだめなら、クライアント側のマシン(Windows限定ですが)の「フォルダオプション」の「ファイルの種類」のCSVファイルの詳細設定で「ダウンロード後に常に開くように設定する」のチェックを付けてみてはどうでしょう。(何か前にもこんな話題が出ましたが、これは関係ないって話になったんでしたっけ?)

3.セッションが切れたタイミングで削除
Global.asaxに
コード:
void Session_End(Object sender, EventArgs E) {
    //処理
}


みたいの書けませんか?


頭に浮かんだものを適当に書いてみました。参考にしてください。
GUNNM
常連さん
会議室デビュー日: 2002/01/23
投稿数: 30
お住まい・勤務地: 横浜
投稿日時: 2003-02-11 22:56
実際にファイルを作成する必要は無いと思います。
ボタンのクリックイベントハンドラに、こんな感じのコードを書いてみてはどうでしょう?
strFileNameで指定されたファイル名で、文字列の中身が保存できると思います。

Response.Clear();
Response.ContentEncoding = new System.Text.UTF8Encoding();
Response.ContentType = "application/octet-stream";
Response.AppendHeader( "Content-Disposition", "attachment;filename=" + strFileName );
Response.Write( "文字列" );
Response.Write( "文字列" );
Response.Write( "文字列" );
Response.End();

ではではー
1

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