2015-10-29 73 views
0

我想將我的網格數據直接導出到Excel。將asp網格數據導出爲ex​​cel

我試過「的HtmlTextWriter」,它是讓我下載的文件。但下載我無法打開該文件後(Excel中拋出錯誤文件的格式不正確。)

我搜索,發現我需要先創建一個XML文件,然後可以導出到Excel。是這樣嗎?

或者我需要先將該文件保存在我的服務器上,然後下載?

或者如果我可以使用任何NuGet軟件包,比如ClosedXML或其他任何軟件包都可以提供幫助。

+0

一個簡單的[CSV文件](https://en.wikipedia.org/wiki/Comma-separated_values)可以。在記事本中打開時,該文件是由htmltextwriter生成的? – rene

+0

它看起來像有標籤

​​ – Palash

回答

0

試穿按鈕下面的代碼點擊

protected void btn_excel_Click(object sender, ImageClickEventArgs e) 
{ 
    try 
    { 

     Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls"); 
     Response.Charset = ""; 
     Response.ContentType = "application/vnd.ms-excel"; 
     using (StringWriter sw = new StringWriter()) 
     { 
      HtmlTextWriter hw = new HtmlTextWriter(sw); 

      //To Export all pages 
      GridView2.AllowPaging = false; 
      work(); // in this function you can bind GridView2 

      GridView2.HeaderRow.BackColor = Color.White; 
      foreach (TableCell cell in GridView2.HeaderRow.Cells) 
      { 
       cell.BackColor = GridView2.HeaderStyle.BackColor; 
      } 
      foreach (GridViewRow row in GridView2.Rows) 
      { 
       row.BackColor = Color.White; 
       foreach (TableCell cell in row.Cells) 
       { 
        if (row.RowIndex % 2 == 0) 
        { 
         cell.BackColor = GridView2.AlternatingRowStyle.BackColor; 
        } 
        else 
        { 
         cell.BackColor = GridView2.RowStyle.BackColor; 
        } 
        cell.CssClass = "textmode"; 
       } 
      } 

      GridView2.RenderControl(hw); 

      //style to format numbers to string 
      string style = @"<style> .textmode { } </style>"; 
      Response.Write(style); 
      Response.Output.Write(sw.ToString()); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 
    catch (Exception ex) 
    { 

    } 

} 
+0

我已經試過了。但是在下載excel後拋出的錯誤是它的格式不正確。 – Palash

+0

那麼你的軟件有問題。你必須嘗試不同的電腦。 – Manraj

+0

我正在下面的錯誤。 「文件格式和‘GridViewExport.xlx’這麼想的匹配擴展。該文件可能被損壞或不安全的。除非你相信它的來源,dont't打開它。你想如果我打開打開它呢? 我不能在文件中看到幾列。我也有我的第一列複選框。難道是創建一個問題? – Palash

0

最簡單的方法是從的NuGet搶ClosedXML,然後得到你想要導出到一個DataTable數據,然後使用下面

驗證碼
XLWorkbook wb = new XLWorkbook(); 
DataTable dt = GetDataTableOrWhatever(); 
wb.Worksheets.Add(dt,"WorksheetName"); 
+0

感謝聽起來不錯,你能幫幫我更多的代碼 – Palash

+0

@Palash要小心,不要成爲一個[求助吸血鬼(HTTP:?//meta.stackoverflow。問題/ 258206/what-is-help-vampire) – rene

+0

我可以試試,如果它與這個問題有關,更新你的問題,否則你需要問一個問題nother問題 –