• 締切済み

VBでWebフォームからのCSV出力を挑戦しているが

あるWebフォームを開発中でOracleDBからのCSVデータ出力にトライしています。 参考書と全く同様の記述をしたのですが画面を実行すると キーワードはサポートされていません : 'unicode' というエラーになってしまいます。 恐らくエンコーディングの部分が問題と思われるのですが、なにぶん素人なもので、どう修正すれば進展するのか分かりません。 どなたかご教示頂けないでしょうか。 Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)  Dim csvString As String = makeCSVData()  Const csvFile As String = "標準原価一覧"  Response.Clear()  Response.ContentType = "application/octet-stream"  Response.AddHeader("Content-Disposition", "attachment;     filename=" & ".csv")  Response.BinaryWrite(Encoding.GetEncoding("Shift-JIS").GetBytes(csvString)) Response.End() End Sub

みんなの回答

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

Response.AddHeader("Content-Disposition", "attachment;filename=" & HttpUtility.UrlEncode(DropDownList1.SelectedValue) & Now.ToShortDateString & ".csv") Response.ContentType = "application/octet-stream" Dim enc As Encoding = Encoding.Default Dim write_string As New StringBuilder 'いろいろ ' ' Response.ContentEncoding = enc Response.Write(write_string.ToString) タイトルはHttpUtility.UrlEncodeを使用しないと文字化けします。 Response.ContentEncodingにEncoding.Defaultを指定すればShift-Jisで出力されます。

STRATS
質問者

お礼

ご返信が遅れて大変申し訳ありませんでした。 見逃しておりました。 こちらは既に解決しております。ご支援をありがとうございました。 Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim dtNow As DateTime = DateTime.Now Dim csvString As String = makeCSVData() Dim csvFile As String csvFile = "STDCOSTS_" & dtNow.ToString("yyyyMMddHHmmss") Response.Clear() Response.ContentType = "application/octet-stream" Response.AddHeader("Content-Disposition", "attachment; filename=" & csvFile & ".csv") Response.BinaryWrite(Encoding.GetEncoding("Shift-JIS").GetBytes(csvString)) Response.End() End Sub