• ベストアンサー

SQLからデータのDL

 SQLサーバからブラウザを介し、外部出力したいと思います。  少ないデータでしたら、「SqlDataSource」から「SPREAD」にデータを渡した後、エクスポートできたのですが、大量のデータ「120列*5000件」だと、流石に無理があります。  出来るだけ軽く外部出力(テキスト形式。出来ればエクセル形式)する方法があるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

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)
回答No.3

Response.ContentType = "text/csv" Response.AddHeader "Content-Disposition","attachment; filename= ***.csv" なんかで、CSVでダウンロードはダメですか?

参考URL:
http://www.geocities.jp/haku1569/web/webdb/tips/tips/0013.html
gonta_256
質問者

お礼

早速試してみたいと思います。 ありがとうございました。

回答No.1

ASP.NETを前提として書いています。 単なるテキストであれば,Page_Loadや独自ハンドラでそのままレスポンスに書き出すのがおそらく一番軽いです。 独自ハンドラが一番軽いですが,プログラムを組むことを考えるとPage_Loadの方がお手軽です。 Excel形式となると,自分でファイルの仕様を読んで書き出すか,サードパーティ製の製品を導入することになります。 なお,サーバーサイドでExcelを動かすことは推奨されていませんし,ライセンス上の問題が出てきます。 http://support.microsoft.com/kb/257757/ja

gonta_256
質問者

お礼

ご回答ありがとうございます。 やはりエクセル形式だと色々問題がありますか(^_^;) そうなるとテキスト形式での出力になりますね。 色々調べてみると、一度SqlDataSourceからDataViewを介して、エクスポートするのがおおいですね。 できれば直接DataViewを利用せずに処理したいのですが、やっぱり無理ですかね? ありがとうございました。