2011-10-13 32 views
2

我使用VS2010上的ASP.NET Web工程中的工作,C#,我希望我的用戶獲得從表格報告excel文件輸出,我知道如何創建CSV文件,但我要去創建EXCEL文件,例如一個按鈕,當點擊該按鈕時,用戶可以使用EXCEL格式下載表格數據,另外我還會在excel中寫入一些unicode文本(波斯語,波斯語),我有什麼選擇?目前我使用下面的代碼來生成CSV文件:創建EXCEL在ASP.NET

  Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=" + "db" + ".csv"); 
     Response.Charset = ""; 
     Response.ContentType = "application/text"; 

     StringBuilder sb = new StringBuilder(); 
     sb.Clear(); 

     //append new line 
     sb.Append("\r\n"); 

     for (int i = 0; i < tblDatabase.Rows.Count; i++) 
     { 
      //add separator 
      for (int j = 0; j < tblDatabase.Rows[0].Cells.Count; j++) 
       sb.Append(Table3.Rows[i].Cells[j].Text + ","); 
      //append new line 
      sb.Append("\r\n"); 
     } 
     Response.Output.Write(sb.ToString()); 
     Response.Flush(); 
     Response.End(); 

回答

0

修改這個代碼來創建Excel文件代替CSV時,沒有大的變化。

只要改變你的擴展

Response.AddHeader("content-disposition", "attachment;filename=" + "db" + ".xls"); 

更改內容類型

Response.ContentType = "application/vnd.ms-excel"; 

這裏是如何寫在Excel工作表中的數據行。

Response.Write("<table border='1px' bordercolor='black'>"); 
Response.Write("<tr>"); 
// loop through column names to display a header row 
foreach (DataColumn dc in tblDatabase.Columns) 
{ 
    Response.Write("<td><strong>" + dc.ColumnName + "</strong></td>"); 
} 
Response.Write("</tr>"); 

int i; 
foreach (DataRow dr in tblDatabase.Rows) 
{ 
    Response.Write("<tr>"); 
    for (i = 0; i < tblDatabase.Columns.Count; i++) 
    { 
     Response.Write("<td>" + dr[i].ToString() + "</td>"); 
    } 
    Response.Write("</tr>"); 
} 
// end table 
Response.Write("</table>"); 
+0

謝謝你,你的回答非常簡單而有效!我的文件格式是XLS,是用於office 2003嗎?當我嘗試使用office 2007打開它時,它向我提出了一個關於格式的問題,我應該將其擴展名更改爲XLSX嗎? –

0

我不得不使用NPOI了良好的效果,學習曲線不是太陡
http://npoi.codeplex.com/

創建本地Excel文件,而不是迫使Excel來解析HTML表格。
對於某些工作(更快更簡單),html表格選項可以,但如果您有要求做出「真實」的事情,那麼請嘗試使用NPOI。