DataTable对像导出为Excel

对于从sql查询出的数据怎么导出excel的问题,网上有N多,就不重说了,这个是用来把DataTable对像转换成符合Excel格式的字符串,然后在客户端输出.先写个函数.用于转换对像

''' <summary>
    ''' 把DataTable对像读取出来,转换成可以使用的Excel内容字符串
    ''' </summary>
    ''' <param name="Dt">需要转换的DataTable对像</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function DataTable2Excel(ByVal Dt As DataTable) As String
        '把DataTable对像转换成excel表格所用的字符串
        Dim sb As New StringBuilder()
        Dim C_name As String
        Dim xx As String = ""
        sb.Append("<table cellspacing=""0"" rules=""all"" border=""1"" style=""height:100%;width:100%;border-collapse:collapse;"">")
        sb.Append("<tr class=""gvHeader"" >")
        For i = 0 To Dt.Columns.Count - 1
            C_name = Trim(Dt.Columns(i).ColumnName.ToString)
            sb.AppendFormat("<td style=""font-size: 12px; background-color: #CCCCCC; line-height: 26px; text-align: center; vertical-align: middle;height:30px"">{0}</td>", C_name)
        Next

        For i = 0 To Dt.Rows.Count - 1
            sb.Append("<tr class=""gvRow"">")
            For j = 0 To Dt.Columns.Count - 1
                xx = Dt.Rows(i)(j).ToString
                sb.AppendFormat("<td style=""text-align: center; vertical-align: middle;height:26px;font-size: 12px;"">{0}</td>", xx)
            Next
            sb.Append("</tr>")
        Next
        sb.Append("</tr>")
        sb.Append("</table>")
        Return sb.ToString
    End Function

然后在导出按钮下调用就可以啦

 Response.Clear()
        Response.Buffer = True
        Response.Charset = "GB2312"
        Response.AppendHeader("Content-Disposition", "attachment;filename=" & Excelname & ".xls")
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
        '设置输出流为简体中文 
        Response.ContentType = "application/vnd.xls"
        Str = DataTable2Excel(Dt)
        Dt.Dispose()

        '设置输出文件类型为excel文件。 
        Response.Write(Str)
        Response.End()


你可能感兴趣的:(Excel,导出,Datatable导出)