Как экспортировать вид сетки в Excel? - PullRequest
1 голос
/ 17 июня 2009

Привет, я занимаюсь разработкой приложения, в котором я использую сетку для отображения данных и добавляю динамический набор данных в качестве заголовка вида сетки, и использую следующий код для экспорта вида сетки в Excel, но я не могу получить таблицу данных был добавлен динамически в сетку в Excel. код, который я использую:

    Response.AddHeader("content-disposition", "attachment;filename=Report.xls");
    Response.Charset = String.Empty;
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView1.DataBind();
    GridView1.RenderControl(hw);
    Response.Write(sw.ToString());
    Response.End();

это любой другой способ следовать.

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

Ответы [ 3 ]

0 голосов
/ 14 февраля 2012

попробуйте это в событии нажатия кнопки

              protected void btnExcel_Click(object sender, ImageClickEventArgs e)
           {
              Response.ClearContent();
              Response.Buffer = true;
              Response.AddHeader("content-disposition", string.Format("attachment; filename=      {0}", "Customers.xls"));
              Response.ContentType = "application/ms-excel";
             StringWriter sw = new StringWriter();
             HtmlTextWriter htw = new HtmlTextWriter(sw);
             gvdetails.AllowPaging = false;
             gvdetails.DataBind();
            //Change the Header Row back to white color
            gvdetails.HeaderRow.Style.Add("background-color", "#FFFFFF");
            //Applying stlye to gridview header cells
            for (int i = 0; i < gvdetails.HeaderRow.Cells.Count; i++)
          {
          gvdetails.HeaderRow.Cells[i].Style.Add("background-color", "#507CD1");
          }
           int j = 1;
           //This loop is used to apply stlye to cells based on particular row
           foreach (GridViewRow gvrow in gvdetails.Rows)
           {
             gvrow.BackColor = Color.White;
             if (j <= gvdetails.Rows.Count)
           {
            if (j % 2 != 0)
      {
        for (int k = 0; k < gvrow.Cells.Count; k++)
          {
        gvrow.Cells[k].Style.Add("background-color", "#EFF3FB");
          }
        }
       }
          j++;
        }
          gvdetails.RenderControl(htw);
            Response.Write(sw.ToString());
           Response.End();
          }
0 голосов
/ 15 августа 2013

это будет экспортировать сетку в форматированный выходной файл

Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment; filename=gridSample.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";

        using (StringWriter sw = new StringWriter())
        {
            HtmlTextWriter hw = new HtmlTextWriter(sw);

            //to export all pages
            gridSample.AllowPaging = false;
            gridSample.DataSource = progress.getSample();
            gridSample.DataBind();
            //bind again

            gridSample.HeaderRow.BackColor = Color.White;

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

            gridSample.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();
        }
0 голосов
/ 15 июля 2009

Я не вижу, куда вы добавляете динамические данные в качестве заголовка ?? Это должно происходить после привязки данных и перед GridView1.RenderControl (hw);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...