Computer Wiz99 Ответов: 2

Экспорт таблицы в Excel, который состоит из нескольких страниц.


У меня есть gridview, который привязан к данным из моей базы данных SQL. Данных слишком много, чтобы просмотреть все сразу на веб-экране, поэтому я позволил ему открыть страницу gridview. Прежде чем я это сделал, у меня есть кнопка, которая может экспортировать gridview в формат excel, и я могу открыть его и увидеть все свои данные. Теперь у меня включена подкачка, и я экспортирую gridview, он экспортирует только первую страницу gridview, а не все целиком. Есть ли способ экспортировать gridview со всеми страницами, не меняя gridview обратно в исходное состояние?

protected void ButtonExcel_Click(object sender, EventArgs e)
{
    <pre>Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=FINSubmitted.xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    System.IO.StringWriter sw = new System.IO.StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView2.RenderControl(hw);
    string style = @"<style> .textmode { } </style>";
    Response.Write(style);
    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();
}


Что я уже пробовал:

Я попытался изменить вид сетки.Allowpaging = false;

F-ES Sitecore

Когда вы вызываете BindGrid в своей функции ButtonExcel_Click, вам нужно отключить подкачку, чтобы все строки отображались. Я бы, вероятно, добавил параметр к функции, который позволяет вам контролировать, когда ей нужно реализовать подкачку или нет

private void BindGrid(bool enablePaging)
{
}

Теперь, когда вы вызываете функцию, вы передаете true или false по мере необходимости. Как вы отключаете пейджинг, мы не можем вам сказать, поскольку вы не объяснили, как вы его включили.

Computer Wiz99

Спасибо. Вот как я включаю пейджинг.

<asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
                        AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" 
                        DataSourceID="SqlDataSourceTrueSubmitted" ForeColor="#333333" GridLines="None" 
                        Height="224px" style="text-align: center">

F-ES Sitecore

Так что используйте

GridView2.AllowPaging = ложь;

чтобы отключить его, когда вы хотите загрузить его на клиент

Computer Wiz99

Я сделал это, но он все еще экспортируется в excel с помощью подкачки. Экспортируется не вся база данных.

2 Ответов

Рейтинг:
5

Computer Wiz99

protected void ButtonExcel_Click(object sender, EventArgs e)
        {

            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=FINSubmitted.xls");
            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-excel";
            System.IO.StringWriter sw = new System.IO.StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(sw);
            GridView2.AllowPaging = false;
            GridView2.DataBind();
            GridView2.RenderControl(hw);
            string style = @"<style> .textmode { } </style>";
            Response.Write(style);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }


Рейтинг:
2

Karthik_Mahalingam

попробуйте создать новый объект Gridview

protected void ButtonExcel_Click(object sender, EventArgs e)
       {
           Response.Clear();
           Response.Buffer = true;
           Response.AddHeader("content-disposition", "attachment;filename=FTESubmitted.xls");
           Response.Charset = "";
           Response.ContentType = "application/vnd.ms-excel";
           System.IO.StringWriter sw = new System.IO.StringWriter();
           HtmlTextWriter hw = new HtmlTextWriter(sw);
           GridView GridviewExcel = new GridView();
           GridviewExcel.AllowPaging = false;
           GridviewExcel.DataSource = yourSource;
           GridviewExcel.RenderControl(hw);
           string style = @"<style> .textmode { } </style>";
           Response.Write(style);
           Response.Output.Write(sw.ToString());
           Response.Flush();
           Response.End();
       }