Analytics

2010年7月7日 星期三

[ASP.NET]DataGrid裡有樣板時匯出Excel時寫法(DataGrid was written while exporting Excel template when)


問題

DataGrid裡有樣板時匯出Excel時寫法

背景:匯出EXCEL之前已經有寫過一篇
問題:當GridView裡加入樣板,而樣板裡加入一個TextBox控制項,發現在匯出Excel的時候,整個aspx都被寫入Excel,一整個傻眼,

解決方法

改寫如下
Dim file_name As String = DateTime.Now.ToString("yyyyMMddHHmmss") & ".xls"
Dim myTextWriter As New System.IO.StringWriter

'寫入標題    
myTextWriter.WriteLine("姓名" & vbTab &"電話"&"vbTab&"備註") 

'以迴圈方式讀取DataGrid的值    
For i As Integer = 0 To dgData.Items.Count – 1
myTextWriter.WriteLine(dgData.Items(i).Cells(2).Text & vbTab _    
& dgData.Items(i).Cells(2).Text.Replace(" ", "") & vbTab _    
& CType(dgData.Items(i).FindControl("txtContract_Content"), TextBox).Text)

Next    

myTextWriter.Close()    
Response.AddHeader("Content-Disposition", "attachment; filename=test.xls")    
Response.ContentType = "application/ms-excel"    
Response.ContentEncoding = System.Text.Encoding.GetEncoding("big5")    
Response.Write(myTextWriter)    
Response.End()

怪了!還是一樣不能解決,明明用StringWriter是以string的方式組資料!!
結果,問題出於CType(dgData.Items(i).FindControl("txtContract_Content"), TextBox).Text雖然抓到了控制項,但....
少了.ToString()??
改成CType(dgData.Items(i).FindControl("txtContract_Content"), TextBox).Text.ToString()就好了!!
這.....太扯了~

沒有留言:

熱門文章