пустой файл Excel при экспорте в Gridview - PullRequest
0 голосов
/ 25 сентября 2018

надеюсь, ты сможешь мне помочь.Я занимаюсь разработкой веб-страницы, которая создает GridView в aspx, который работает, и кнопку, которая при нажатии экспортирует gridView в файл Excel.Этот второй случай не работает для меня, файл пуст.Вот код:

protected void Button2_Click(object sender, EventArgs e) //click en botón Exportar- -Click to export
{
   try
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "CUSS - Global Stats.xls"));
        Response.ContentType = "application/ms-excel";
        Response.ContentEncoding = System.Text.Encoding.Unicode;  
        System.IO.StringWriter writer = new StringWriter();
        System.Web.UI.HtmlTextWriter html = new System.Web.UI.HtmlTextWriter(writer);
        GridView1.AllowPaging = false;
        GridView1.RenderControl(html); //gpp prints outs
        Response.Write(writer.ToString());
        Response.Flush();
        Response.End();
    }
    catch (Exception)
    {
    }

Gridview правильно генерируется в asp, как показано на рис. GridViewResult

 protected void Button1_Click(object sender, EventArgs e)
    {

            ...
            GridView1.DataSource = Prints.ToList();
            GridView1.DataBind();
            ...

    }  

Можете ли вы мне помочь?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Может быть из-за make response GZip?

На фильтре?

response.Filter = New GZipStream(response.Filter, CompressionMode.Compress)
0 голосов
/ 25 сентября 2018

Должен быть лучший способ сделать это, но я снова «делаю» свой просмотр сетки: using ClosedXML.Excel; Событие клика:

public void button1_Click(object sender, EventArgs e)
{
    using(XLWorkbook libro_trabajo = new XLWorkbook())
    {
        DataSet ps = datos_referencias();

        libro_trabajo.Worksheets.Add(ps);
        libro_trabajo.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
        libro_trabajo.Style.Font.Bold = true;
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "";
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;filename=reporte_clientes.xlsx");

        using (MemoryStream memoria = new MemoryStream())
        {

            libro_trabajo.SaveAs(memoria);
            memoria.WriteTo(Response.OutputStream);
            Response.Flush();
            Response.End();

        }
    }
}

Получение набора данных:

public DataSet datos_referencias()
{

    DataSet ds = new DataSet();
    DataTable tabla_detallado = new DataTable("Clientes");
    tabla_detallado.Columns.Add(new DataColumn("Cliente", typeof(string)));
    objeto = new Conexion();
    try
    {
        objeto.abrir_conexion_mysql();
        objeto.cadena_comando_mysql = "SELECT * from ...ETC ";
        objeto.aplicar_comando_mysql_extraccion();
        while (objeto.leer_comando.Read())
        {
            DataRow fila = tabla_detallado.NewRow();
            fila["Cliente"] = (objeto.leer_comando.GetString(1)).ToUpper();                
            tabla_detallado.Rows.Add(fila);
        }

    }
    finally {objeto.cerrar_conexion_mysql_extraccion(); }
    ds.Tables.Add(tabla_detallado);
    return ds;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...