- ベストアンサー
SQLからデータのDL
SQLサーバからブラウザを介し、外部出力したいと思います。 少ないデータでしたら、「SqlDataSource」から「SPREAD」にデータを渡した後、エクスポートできたのですが、大量のデータ「120列*5000件」だと、流石に無理があります。 出来るだけ軽く外部出力(テキスト形式。出来ればエクセル形式)する方法があるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1で書いた通り,直接レスポンスを返せばよいです。 in C# 2.0, CodeBehind file protected override OnLoad (EventArgs e) { Response.ContentType = "text/plain"; Response.ClearContent(); using (SqlConnection connection = new SqlConnection("コネクション文字列")) using (SqlCommand command = new SqlCommand("SQL", connection)) { connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Next()) { // reader.Get系メソッドで読み出して,Response.Outputに書き出す } reader.Close(); } connection.Close(); } Response.Flush(); Response.End(); } とか。
その他の回答 (2)
- yuuu69
- ベストアンサー率29% (8/27)
Response.ContentType = "text/csv" Response.AddHeader "Content-Disposition","attachment; filename= ***.csv" なんかで、CSVでダウンロードはダメですか?
- Yune-Kichi
- ベストアンサー率74% (465/626)
ASP.NETを前提として書いています。 単なるテキストであれば,Page_Loadや独自ハンドラでそのままレスポンスに書き出すのがおそらく一番軽いです。 独自ハンドラが一番軽いですが,プログラムを組むことを考えるとPage_Loadの方がお手軽です。 Excel形式となると,自分でファイルの仕様を読んで書き出すか,サードパーティ製の製品を導入することになります。 なお,サーバーサイドでExcelを動かすことは推奨されていませんし,ライセンス上の問題が出てきます。 http://support.microsoft.com/kb/257757/ja
お礼
ご回答ありがとうございます。 やはりエクセル形式だと色々問題がありますか(^_^;) そうなるとテキスト形式での出力になりますね。 色々調べてみると、一度SqlDataSourceからDataViewを介して、エクスポートするのがおおいですね。 できれば直接DataViewを利用せずに処理したいのですが、やっぱり無理ですかね? ありがとうございました。
お礼
早速試してみたいと思います。 ありがとうございました。