使用Asp.net& amp ;;从SQL Server数据库导出Excel Vb.net支持阿拉伯语

时间:2015-09-14 19:33:29

标签: asp.net sql-server vb.net excel

请帮忙

如何使用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文件后,其中的单词显示为难以理解

محمد بن راشد آل مكتوم الثانوية للبنين (المزرعة الشرقية)

1 个答案:

答案 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>元素,没有任何元数据,这是它没有正确读取它的另一个原因。