Как экспортировать GridView в Excelsheet? - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть сетка на моей странице.То, что я хочу, - когда пользователь нажимает кнопку «Экспорт», он должен открыть окно, чтобы загрузить файл и сохранить как лист Excel.В моей сетке включено разбиение на страницы, но при экспорте данных все строки должны отправляться на лист Excel независимо от разбиения на страницы.Я не могу экспортировать свой источник данных (с данными), потому что он содержит несколько других скрытых столбцов, но я использую его только для своих целей и не знаю, что показать пользователям.Как я могу это сделать .... ???Я не получаю никакой идеи ...

Как сказал Джеймс Джонсон ... Мне это понравилось.Это код, данный им

protected void btnExport_Click(object sender, EventArgs e)
{       
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "";

    System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new    System.Web.UI.HtmlTextWriter(oStringWriter);

    GridView1.RenderControl(oHtmlTextWriter);//Error is thrown from here.

    Response.Write(oStringWriter.ToString());
    Response.End();
}

Но при этом выдается следующая ошибка из-за указанного зелья в коде

Control 'ctl00_ContentPlaceHolder1_ViewAdvances1_grdAdvance' of type 'GridView' must be  placed inside a form tag with runat=server.

Я поместил gridview в usercontrol, usercontrol помещен вСтраница ASPX и эта страница использует главную страницу, которая уже имеет тег формы.

Ответы [ 4 ]

1 голос
/ 09 сентября 2011

Вы можете попробовать что-то вроде этого:

protected void btnExport_Click(object sender, EventArgs e)
{       
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "";

    System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

    GridView1.RenderControl(oHtmlTextWriter);

    Response.Write(oStringWriter.ToString());
    Response.End();
}
0 голосов
/ 03 июня 2013

Я получил решение для экспорта в Excel на главной странице.

поместите этот код после кода загрузки страницы

 public override void VerifyRenderingInServerForm(Control control)<br/>
    {<br/>
        /* Verifies that the control is rendered */<br/>
        //base.VerifyRenderingInServerForm(control);
    }

затем

protected void btnExportExcel_Click(object sender, EventArgs e)<br/>
    {<br/>
        try<br/>
        {<br/>
            BindReportdata(ddlReport.SelectedIndex);<br/>
            Response.Clear();<br/>
            Response.Buffer = true;<br/>
            Response.AddHeader("content-disposition",<br/>
             "attachment;filename=report.xls");<br/>
            Response.ContentType = "application/ms-excel";<br/>
            StringWriter sw = new StringWriter();<br/>
            HtmlTextWriter hw = new HtmlTextWriter(sw);<br/>
            for (int i = 0; i < gv_ReportData.Rows.Count; i++)<br/>
            {
                GridViewRow row = gv_ReportData.Rows[i];<br/>
            }
            gv_ReportData.GridLines = GridLines.Both;<br/>
            gv_ReportData.RenderControl(hw);<br/>
            Response.Write(sw.ToString());<br/>
            Response.Flush();<br/>
            Response.End();<br/>
        }<br/>
        catch (Exception ex)<br/>
        {<br/>
            throw ex;<br/>
        }<br/>
    }<br/>

и на странице aspx используйте панель обновления и триггер для кнопки

0 голосов
/ 12 сентября 2011

Добавьте следующий код к вашему коду:

Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
    'dont delete - needed for excel export
End Sub
0 голосов
/ 09 сентября 2011

Это много дискуссий по этому поводу:

экспорт строк таблицы вида в таблицу Excel

Экспорт GridView в Excel

Экспорт сетки в Excel в приложении Windowsforms (возможно, некоторую полезную информацию вы найдете здесь)

...