请帮忙
如何使用Asp.net& amp ;;从SQL Server表导出Excel Vb.net支持阿拉伯语?
我使用过这段代码:
Dim cmdText As String = "SELECT * FROM ReportView"
Dim command As New SqlCommand(cmdText, Conn)
Conn.Open()
Dim da As New SqlDataAdapter(command)
Dim dt As New DataTable()
da.Fill(dt)
Conn.Close()
Dim GridView1 As New GridView()
GridView1.DataSource = dt
GridView1.DataBind()
Response.Clear()
Response.Buffer = True
Response.Charset = "UTF-8"
Response.ContentType = "application/vnd.ms-excel;charset=UTF-8"
Response.AddHeader("content-disposition", "attachment;filename=Report.xls")
Dim sw As New StringWriter()
Dim hw As New HtmlTextWriter(sw)
GridView1.RenderControl(hw)
Response.Output.Write(sw.ToString())
Response.Flush()
Response.End()
但问题出现在导出Excel文件后,其中的单词显示为难以理解
Ù…Øمد بن راشد آل مكتوم الثانوية للبنين (المزرعة الشرقية)
答案 0 :(得分:0)
您使用的是错误的MIME内容类型("application/vnd.ms-excel;charset=UTF-8"
)。
您无法从ASP.NET生成实际的Excel(*.xls
或*.xlsx
)文件,因为它们都是复杂的文件格式(XLS是二进制文件,XLSX是拉链压缩的XML文档系列)
您的代码目前正在做什么呈现HTML <table>
(通过滥用GridView
控件)并假设Excel会看到它是一个HTML表并相应地读取它。
相反,请生成CSV文件或输出实际的HTML文件,并添加必要的xmlns:o=\"urn:schemas-microsoft-com:office:office\\ xmlns:x="urn:schemas-microsoft-com:office:excel"
属性和元素。
由于您滥用Excel的文件阅读器无法正确解释文本内容,请注意Excel忽略charset
标题的Content-Type
属性。我相信(虽然不能证明)Excel将文件读取为Latin1(或其他一些1字节的西式语言编码)并且不默认为UTF-8,即使在HTML文件中也是如此,除非有<meta />
元素指定使用的编码,但你只是渲染一个HTML片段,一个<table>
元素,没有任何元数据,这是它没有正确读取它的另一个原因。