将网格视图导出到Excel

问题描述:

需要帮助将我的gridview转换为excel文档.香港专业教育学院尝试了几个例子,似乎不能做到正确.任何帮助将非常感激.这是我的gridview代码,它是从SQL数据库填充的.

Need help bringing my gridview into a excel document. Ive tried several example and can't seem to get it right. Any help would be much appreciated. Here is my gridview code, it is being populated from a SQL database.

<div>
    <asp:GridView Align="Center" ID="gvResults" AutoGenerateColumns="false" runat="server" Width="608px"
        Style="width: 80%; margin-bottom: 0px" CellPadding="4" ForeColor="#333333" GridLines="None"
        OnRowDataBound="gvResults_RowDataBound">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Image ID="imgDataMoreInfo" ImageUrl="T:\Groups\IntResoures\pic\tabpic.jpg" CssClass="img_data_moreinfo" Height="7" Width="7" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Government Name & Address">
                <ItemTemplate>
                    <asp:Label ID="lblGovernmentNameAddress" runat="server" Text=""></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="DOB" HeaderText="DOB" />
            <asp:TemplateField HeaderText="SSFHS Name & Address">
                <ItemTemplate>
                    <asp:Label ID="lblSSFHSNameAddress" runat="server" Text=""></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="ssfhsdob" HeaderText="DOB" />
            <asp:TemplateField HeaderText="Match Status">
                <ItemTemplate>
                    <asp:RadioButtonList ID="rblMatchStatus" runat="server" RepeatDirection="Vertical"></asp:RadioButtonList>
                    <asp:Label ID="lblFirst" CssClass="displayNone" runat="server" />
                    <asp:Label ID="lblSecond" CssClass="displayNone" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>
</div>

我的导出按钮和事件

<asp:Button ID="btnExportToExcel" OnClick="btnExportToExcel_Click" runat="server" Text="Export to Excel" Width="89px" Font-Size="X-Small" />




 protected void btnExportToExcel_Click(object sender, EventArgs e)
{

}

以下是与您的代码有关的更具体的代码:

Here's a more specific one with respective to your code:

 protected void btnExportToExcel_Click(object sender, EventArgs e)
{
    Response.Clear();

    Response.AddHeader("content-disposition", "attachment;
    filename=FileName.xls");

    Response.Charset = "";

    // If you want the option to open the Excel file without saving than

    // comment out the line below

    // Response.Cache.SetCacheability(HttpCacheability.NoCache);

    Response.ContentType = "application/vnd.xls";

    System.IO.StringWriter stringWrite = new System.IO.StringWriter();

    System.Web.UI.HtmlTextWriter htmlWrite =
    new HtmlTextWriter(stringWrite);

    gvResults.RenderControl(htmlWrite);

    Response.Write(stringWrite.ToString());

    Response.End();

}