2013-05-30 28 views
0

我有出口的GridView数据到Excel,这里是我的代码:字符串格式时导出到Excel从GridView的

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? thk you

+0

我发现,在Excel中,如果你需要一个号码,以显示和输入一样,在数字显示正确之前加一个撇号'''。 – Netricity

+0

有没有办法做到这一点编程? – Sabilv

+0

你如何写入Excel? 你的问题是由excel引起的,它将某些数字转换成这样的carbage。 Y我们的编号应该写成一个文本单元格,所以无论如何,Excel都会显示原始文本。 如果您使用EPPLUS这样的免费excel库之一,这很容易,但如果您使用我们的csv,则几乎不可能。 –

回答

1

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

补充说明:Epplus支持一点点运气“LoadFromDataTable”方法 - ,所有你需要...

+0

嘿基督教谢谢你,它工作正常:) – Sabilv

相关问题