2012-07-13 96 views
2

在一個aspx頁面:如何將動態創建的表格導出爲ex​​cel?

<asp:table id = "table1" runat ="server"></table> 

我創建使用Javascript從CS文件像這樣的表:

StringBuilder sb = new StringBuilder() 
sb.Append('<script>') ; 
sb.Append(document.write('<table><tr><td>hghj</td></tr></table>')) 
Table cell ; 
Table row; 
cell.Control.Add(new LiteralControl(sb.ToString())) ; 
row.Control.Add(cell); 
table1.Control.Add(row); 

現在我想導出表到Excel,所以我用了以下碼。它打開了excel文件。但沒有看到數據。

Response.ContentType = "application/vnd.ms-excel";   
Response.AddHeader("Content-Disposition", "attachment; filename=ExcelFile.xls"); 
Response.ContentEncoding = Encoding.UTF8;   
StringWriter tw = new StringWriter(); 
HtmlTextWriter hw = new HtmlTextWriter(tw); 
table1.RenderControl(hw);   
Response.Write(tw.ToString());   
Response.End(); 

回答

0

我有一個類似的問題,下面的解決方案爲我工作。希望它可以幫助OP和其他人。在我的情況下,表數據是在運行時動態填充的,但是當我試圖將數據導出爲ex​​cel時,我得到一個空白的excel文件。我通過將表格生成代碼放在if (!IsPostBack){}之外解決了這個問題。這是我的代碼結構看起來像這樣改變後的內容:

protected void Page_Load(object sender, EventArgs e) 
{ 
    FunctionToPopulateTableDataAtRuntime(); 

    if (!IsPostBack) 
    { 
     // other parts of the code 
    } 
} 

private void FunctionToPopulateTableDataAtRuntime() 
{ 
    // code to dynamically populate table data at run-time 
    // this code is somewhat similar to that of OP 
    // but it does not make use of JavaScript whatsoever 
} 

private void ExportTableToExcel() 
{ 
    // the code for this function is somewhat similar to what OP has 
    Response.ContentType = "application/vnd.ms-excel"; 
    Response.AddHeader("Content-Disposition", "attachment; filename=test.xls;"); 
    Response.ContentEncoding = Encoding.UTF8; 
    StringWriter stringWrite = new StringWriter(); 
    HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
    myTable.RenderControl(htmlWrite); 
    Response.Write(stringWrite.ToString()); 
    Response.End(); 
}  

protected void btnExportToExcel_Click(object sender, EventArgs e) 
{ 
    ExportTableToExcel(); 
} 

這是什麼代碼前(CSS)的樣子:

<asp:Table 
    ID="myTable" 
    runat="server"> 
</asp:Table> 
<asp:Button 
    ID="btnExportToExcel" 
    runat="server" 
    Text=" Export to Excel " 
    OnClick="btnExportToExcel_Click"/> 
-1
public override void VerifyRenderingInServerForm(Control control) 
{ 
    /* Verifies that the control is rendered */ 
} 
+0

請您發表評論多一點?另外它看起來像這樣不回答問題,但提供了調試的提示。 – 2016-04-11 07:19:37