2015-08-10 2 views
0

У меня есть 3 gridviews на моем веб-сайте, которые мне нужно экспортировать в excel, но мне нужно, чтобы каждый вид сетки отображался в разных рабочих листах.Экспорт нескольких gridviews на несколько листов excel

Этой ссылка Экспорт GridView многократным листа Excel использует нечто похожее Export multiple gridviews to multiple excel tabs (sheets)

Для экспорта несколько GridViews кратных рабочих листов, я использую .NET, и я скачал ClosedXML, а также DocumentFormat.OpenXml.dll.

В веб-приложении у меня нет ошибки, но выход XLS пуст.

Кто-нибудь знает, как я могу это решить?

Можете ли вы предложить любой другой метод?

Заранее спасибо.

Пожалуйста, проверьте код, указанный ниже.

protected void btnExportBoth_Click(object sender, EventArgs e) 
{ 
    XLWorkbook wb = new XLWorkbook(); 
    GridView[] gvExcel = new GridView[] { gv1, gv2, gv3 }; 

    string[] name = new string[] { "gv1", "gv2", "gv3" }; 

    for (int i = 0; i < gvExcel.Length; i++) 
    { 
     if (gvExcel[i].Visible) 
     { 
      gvExcel[i].AllowPaging = false; 
      gvExcel[i].DataBind(); 

      DataTable dt = new DataTable(name[i].ToString()); 
      for (int z = 0; z < gvExcel[i].Columns.Count; z++) 
      { 
       dt.Columns.Add(gvExcel[i].Columns[z].HeaderText); 
      } 

      foreach (GridViewRow row in gvExcel[i].Rows) 
      { 
       dt.Rows.Add(); 
       for (int c = 0; c < row.Cells.Count; c++) 
       { 
        dt.Rows[dt.Rows.Count - 1][c] = row.Cells[c].Text; 
       } 
      } 

      wb.Worksheets.Add(dt); 
      gvExcel[i].AllowPaging = true; 
     } 
    } 

    Response.Clear(); 
    Response.Buffer = true; 
    Response.Charset = ""; 
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
    Response.AddHeader("content-disposition", "attachment;filename=Workbook_Name.xlsx"); 

    using (MemoryStream MyMemoryStream = new MemoryStream()) 
    { 
     wb.SaveAs(MyMemoryStream); 
     MyMemoryStream.WriteTo(Response.OutputStream); 
     Response.Flush(); 
     Response.End(); 
    } 
} 
+0

Может быть, ваше gridview не содержит никаких данных, потому что я не вижу, как вы указываете источник данных для gridviews. – shreesha

ответ

1

Вы уверены, что у заселили GridView на btnExportBoth_Click методе?

 gvExcel[i].AllowPaging = false; 
     gvExcel[i].DataBind(); 

В btnExportBoth_Click метода необходимо вызвать метод для заполнения GridView, как в Интернете.

Смежные вопросы