导出到Excel时的字符串格式从gridview

时间:2013-05-30 08:54:29

标签: asp.net vb.net excel gridview string-formatting

我将Gridview数据导出为ex​​cel,这是我的代码:

 Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.Click
        Try
            Dim dt As New DataTable
            If CReversal.SearchReversal2(txtAccount.Text, txtCustName.Text, txtAmount.Text, dropResponse.SelectedValue.ToString, txtRefNo.Text, txtDate.Text) Then
                dt = CReversal.DT
            Else
                eMessage("System failure: ", CReversal.eMsg)
            End If
            Dim DataGrd As New DataGrid()
            DataGrd.DataSource = dt.DefaultView
            DataGrd.DataBind()

            Dim attachment As String
            attachment = "attachment; filename=Inquiry_Report" & Format(Now, "ddMMMyyyy") & ".xls"
            Response.Buffer = True
            Response.ClearContent()
            Response.ClearHeaders()
            Response.AddHeader("content-disposition", attachment)
            Response.ContentType = "application/ms-excel"
            Dim sw As New StringWriter()
            Dim htw As New HtmlTextWriter(sw)
            DataGrd.RenderControl(htw)
            Response.Write(sw.ToString())
            Response.End()
        Catch ex As Exception
            eMessage("Export Data failure: ", ex.ToString())
        End Try

    End Sub

导出过程按我的意愿运行。但是当我打开excel文件时,我得到了一些字符串数字字符变成这样:

enter image description here 但实际上datagridvie显示是这样的: should

当我们想以编程方式导出到excel时,是否可以格式化字符串数字?你呢

1 个答案:

答案 0 :(得分:1)

您的方法存在的问题是,您没有编写“真正的”Excel数据。这是一个可以被excel读取的html表,但是你真的不能影响excel读取这个烂摊子的方式。像EPPLus这样的图书馆在编写excel文件方面要好得多,并且可以减少数量级的麻烦。它是免费的,即使在商业环境中,所以当你使用它时没有问题。只是更好的结果

作为旁注:Epplus支持“LoadFromDataTable”方法 - 运气不错,只需要......