プロが教える店舗&オフィスのセキュリティ対策術

 SQLサーバからブラウザを介し、外部出力したいと思います。

 少ないデータでしたら、「SqlDataSource」から「SPREAD」にデータを渡した後、エクスポートできたのですが、大量のデータ「120列*5000件」だと、流石に無理があります。

 出来るだけ軽く外部出力(テキスト形式。出来ればエクセル形式)する方法があるでしょうか?

A 回答 (3件)

ASP.NETを前提として書いています。



単なるテキストであれば,Page_Loadや独自ハンドラでそのままレスポンスに書き出すのがおそらく一番軽いです。
独自ハンドラが一番軽いですが,プログラムを組むことを考えるとPage_Loadの方がお手軽です。
Excel形式となると,自分でファイルの仕様を読んで書き出すか,サードパーティ製の製品を導入することになります。

なお,サーバーサイドでExcelを動かすことは推奨されていませんし,ライセンス上の問題が出てきます。
http://support.microsoft.com/kb/257757/ja
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

やはりエクセル形式だと色々問題がありますか(^_^;)

そうなるとテキスト形式での出力になりますね。
色々調べてみると、一度SqlDataSourceからDataViewを介して、エクスポートするのがおおいですね。

できれば直接DataViewを利用せずに処理したいのですが、やっぱり無理ですかね?

ありがとうございました。

お礼日時:2009/03/25 15:21

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();
}
とか。
    • good
    • 0

Response.ContentType = "text/csv"


Response.AddHeader "Content-Disposition","attachment; filename= ***.csv"

なんかで、CSVでダウンロードはダメですか?

参考URL:http://www.geocities.jp/haku1569/web/webdb/tips/ …
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/22 08:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!