その方法と注意点をいくつか。常識的な事なのですが、結構できてない人たくさんいます。
例えば、DataTableに取得したデータをそのままCSV形式でダウンロードしたいという場合は下記のようにします。
Dim buf As New StringBuilder
'データテーブルの全行をCSV変換しバッファに追加
For i As Integer = 0 To dt.Rows.Count - 1
buf.Append(Join(dt.Rows(i).ItemArray, ","))
buf.Append(vbCrLf)
Next
'レスポンスに対して各種設定をします。
Response.ContentType = "application/download"
Response.AppendHeader("Content-Disposition", "filename=""ほにょ.csv""")
'エンコードを指定する場合は下記のように。 Response.ContentEncoding = System.Text.Encoding.GetEncoding("Shift_JIS")
'Responseに書き込みます。
Response.Write(buf.ToString)
重要なのは、長い文字列の生成にはStringBuilderを利用するという事。
これをStringでそのまま作ったりすると文字列長によっては大変なことになります(^^;
今となっては常識的な事ですが、結構知らない人たくさんいます。注意しましょう。
※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。
Dim buf As New StringBuilder
'データテーブルの全行をCSV変換しバッファに追加
For i As Integer = 0 To dt.Rows.Count - 1
buf.Append(Join(dt.Rows(i).ItemArray, ","))
buf.Append(vbCrLf)
Next
'レスポンスに対して各種設定をします。
Response.ContentType = "application/download"
Response.AppendHeader("Content-Disposition", "filename=""ほにょ.csv""")
'エンコードを指定する場合は下記のように。 Response.ContentEncoding = System.Text.Encoding.GetEncoding("Shift_JIS")
'Responseに書き込みます。
Response.Write(buf.ToString)
重要なのは、長い文字列の生成にはStringBuilderを利用するという事。
これをStringでそのまま作ったりすると文字列長によっては大変なことになります(^^;
今となっては常識的な事ですが、結構知らない人たくさんいます。注意しましょう。
※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。