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

CSV形式、Tab形式、Excel形式などでダウンロードしたい

1
投稿者投稿内容
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2005-10-27 10:14
質問させてください。

ASPでselect文の結果をCSV形式、Tab形式などで保存したいのですが、
コードの書き方がいまいち分かりません。
(保存するまでのロジックとかです。)
最後は、a-hrefとかで保存先のファイルをダウンロードするっていうイメージですけど。


簡単で結構ですので、どなたかアドバイスをいただけたら嬉しいです。

よろしくお願いします。
らい
大ベテラン
会議室デビュー日: 2005/08/02
投稿数: 159
お住まい・勤務地: 東京都と千葉県のさかいめ
投稿日時: 2005-10-27 10:53
らいと申します。

引用:

emmaさんの書き込み (2005-10-27 10:14) より:
ASPでselect文の結果をCSV形式、Tab形式などで保存したいのですが、
コードの書き方がいまいち分かりません。
(保存するまでのロジックとかです。)
最後は、a-hrefとかで保存先のファイルをダウンロードするっていうイメージですけど。


えーと、いくつか質問を。

1.DBにSQL(SELECT文)を投げてレスポンスをカンマ形式orタブ形式で保存して、
 それをダウンロードできるようにすればOK?
2.保存とダウンロードのロジックは分ける?それともいっしょでいい?
3.わけるのであれば、リンクは自動生成しないとダメ?
 それとも先に用意しておいて対応する?
4.カンマ形式とタブ形式一緒に作成するの?

この辺によって結構ロジックが変わってくる気がしますが。

_________________
一寸先は闇
安定してるシステムって言ったじゃん(泣)
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-10-27 11:01
1.ADO.NETでデータを取得
2.for文で回して、項目をカンマやタブで区切って結合
こんな感じ?動かしてみてないけど。
コード:
DataTable dt;
string csv;

foreach(DataRow dr in dt.Rows)
{
	for(int i=0;i<dr.ItemArray.Length;i++)
	{
		if(i!=0)csv += ",";
		csv += dr[i];
	}
	csv += "\r\n";
}


3.FileStreamとかで書き出す。

でいいんじゃないですか?
何が問題になっていますか?
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2005-10-27 11:14
らいさん、一郎さん、ご返答ありがとうございます。
詳細などを記載させて頂きます。


環境としては、とりあえず
・Windows2000 Pro + IIS
・ASP.NETではありません。テキスト(SakuraEditor)ベースに、VBScriptを打ち込んでいます。

やりたいことのイメージ
・SQL(select文)の実行結果を、CSV or Tab or Excel で保存したい。
・画面上に、チェックボックスが何かで保存形式を選択できるようにする。
・保存とダウンロードのロジックは、一緒でも構いません。

とりあえず、テスト的にシンプルな物を作ろうとしているだけです。

SQLの実行などは、問題ないのですが、そこからどのようにダウンロードまで持っていくのかが分からない状態です。一旦、どこかに保存するとしたら、どのように保存するのかなど。

このような感じです。
らい
大ベテラン
会議室デビュー日: 2005/08/02
投稿数: 159
お住まい・勤務地: 東京都と千葉県のさかいめ
投稿日時: 2005-10-27 11:33
らいです。

引用:

emmaさんの書き込み (2005-10-27 11:14) より:
環境としては、とりあえず
・Windows2000 Pro + IIS
・ASP.NETではありません。テキスト(SakuraEditor)ベースに、VBScriptを打ち込んでいます。

やりたいことのイメージ
・SQL(select文)の実行結果を、CSV or Tab or Excel で保存したい。
・画面上に、チェックボックスが何かで保存形式を選択できるようにする。
・保存とダウンロードのロジックは、一緒でも構いません。


とりあえず、Excel形式はおいといて。
# いや、テキスト形式のものとロジックが違うので、とりあえず放置

SQLの実行とかは大丈夫ということなので割愛して
簡単にやり方でも。

1.Scripting.FileSystemObjectのオブジェクトを作成
 ⇒テキストの吐き出し用
2.SQLの発行・Recordsetの取得
3.1.で作成したオブジェクトから、
 TextStreamオブジェクトを作成する
 Ex. Set oTS = oFSO.CreateTextFile(ファイル名) …だったと思う。
 ファイル名部分に、MapPath関数を使用しておけば、
 ASPファイルと同位にファイルが作成できて便利。
4.レコードセットをFor〜Nextでまわす。
 この前に、フィールド区切りをタブかカンマを選択させておく。
 変数にしておくと便利。
 まわして取得した文字列をWriteLineで書いていく。
5.TextStream、FileSystemObjectオブジェクトを閉じる。
 これで、ファイルの作成はできる。
6.このままダウンロードさせるのであれば、JavaScriptで
 location.hrefを使ってやればいいんだっけ?

で完了。
しかし、問題点が。
絶対に2人以上が同時にやらないこと。
ファイルがまず壊れます。
なんで、ダウンロードに関しては専用ページを用意して対応したほうがいいかも。
もしくは、同じページ内でダウンロードコーナーを設けるか。

こんなん出ましたが。

_________________
一寸先は闇
安定してるシステムって言ったじゃん(泣)
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2005-10-27 15:22
らいさん、先ほどはありがとうございました。

FileSystemObjectを使用して、テキストの保存とかできました。

そこで、もう一つ質問させてください。
一応、JavaScript内に、Location.hrefを埋め込んで、ダウンロードしたいファイルのリンクを張りましたが、IEの画面上にそのまま表示されて、ダウンロード画面が表示されません。

これに関しては、どのように解決したらいいのでしょうか?
アドバイスを頂けたら、幸いです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-27 15:34
引用:

emmaさんの書き込み (2005-10-27 15:22) より:

一応、JavaScript内に、Location.hrefを埋め込んで、ダウンロードしたいファイルのリンクを張りましたが、IEの画面上にそのまま表示されて、ダウンロード画面が表示されません。


MIME の設定ですかね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-10-27 15:39
[HOW TO] ASP を使って動的なテキスト ドキュメントをクライアントに送信する
http://support.microsoft.com/default.aspx?scid=kb;ja;300108
1

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