всем привет
вот какая странность происходит
делаю так:
response.Clear()
response.AddHeader("Content-Disposition", "attachment;filename=My.xls")
response.ContentType = "application/vnd.ms-excel"
response.Write(ds.Tables(0).Rows(0)("LastName"))
response.End()
экселевский файлик отображает строку содержащую уникод читабельно.
а если так :
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment;filename=My.xls")
Response.ContentType = "application/vnd.ms-excel"
Response.Write("<table><tr><td>" & ds.Tables(0).Rows(0)("LastName")) & "</td></tr></table>" )
response.End()
то вижу краказяки.
что меняется если я подсовываю таблицу ?
.ContentEncoding для Response ничего не меняет.
так же как charset.
может кому пригодится
при экспорте в excel таким образом действительно проблемы с юникодом.
.ContentEncoding не спасает.
добавление строки в response напрямую решает проблему:
Private Function ExportToExcel(ByVal dsItinerary As DataSet) As Boolean
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment;filename=MyItinerary.xls;")
Response.Write("<head><meta http-equiv=Content-Type content=""text/html; charset=utf-8""></head>")
Dim stringWrite As New System.IO.StringWriter()
Dim htmlWrite As New System.Web.UI.HtmlTextWriter(stringWrite)
Dim dgTemp As New DataGrid
dgTemp.ItemStyle.VerticalAlign = VerticalAlign.Top
dgTemp.DataSource = dsItinerary.Tables(0)
dgTemp.DataBind()
dgTemp.RenderControl(htmlWrite)
Response.Write(stringWrite.ToString)
Response.End()
End Function
|