C# 将GridView导出到Excel

C# 将GridView导出到Excel,c#,asp.net,C#,Asp.net,我试图将GridView导出到xls文件中,我将GridView插入到Modal中,我假设由于这个原因它无法导出 这是我的按钮操作的后端: protected void Btn_download_Click(object sender, EventArgs e) { Response.ClearContent(); Response.AppendHeader("content-disposition", "attachment; f

我试图将
GridView
导出到xls文件中,我将
GridView
插入到
Modal
中,我假设由于这个原因它无法导出

这是我的
按钮操作的
后端

protected void Btn_download_Click(object sender, EventArgs e)
        {
            Response.ClearContent();
            Response.AppendHeader("content-disposition", "attachment; flename=MainReport.xls");
            Response.ContentType = "application/excel";

            StringWriter stringWriter = new StringWriter();
            HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);

            Grv_main.RenderControl(htmlTextWriter);
            Response.Write(stringWriter.ToString());
            Response.End();
        }
这是
HTML

<form id="form1" runat="server">

        <div class="container">
            <div class="modal fade" id="History-Maint" role="dialog">
                <div class="modal-dialog modal-lg">
                    <div class="modal-content">
                        <div class="modal-header" style="padding: 35px 50px;">
                            <button type="button" class="close" data-dismiss="modal">&times;</button>
                            <h3><span class="glyphicon glyphicon-list-alt"></span>&nbsp Maintenance Report</h3>
                        </div>
                        <div class="modal-body">
                            <asp:GridView ID="Grv_main"
                                CssClass="table table-striped table-bordered table-hover"
                                runat="server"
                                AutoGenerateColumns="False"
                                Width="940px"
                                HorizontalAlign="Center"
                                DataKeyNames="id"
                                AllowPaging="True" OnRowEditing="GridView1_RowEditing">
                                <Columns>
                                    <asp:TemplateField HeaderText="id" Visible="false">
                                        <ItemTemplate>
                                            <asp:Label ID="Lbl_id" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="status">
                                        <ItemTemplate>
                                            <asp:Label ID="Lbl_stats" runat="server" Text='<%# Bind("STATUS") %>'></asp:Label>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" />
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="tool">
                                        <ItemTemplate>
                                            <asp:Label ID="Lbl_tool" runat="server" Text='<%# Bind("TOOL") %>'></asp:Label>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" />
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Area Change">
                                        <ItemTemplate>
                                            <asp:Label ID="Lbl_areach" runat="server" Text='<%# Bind("AREA") %>'></asp:Label>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" />
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="responsable">
                                        <ItemTemplate>
                                            <asp:Label ID="Lbl_resp" runat="server" Text='<%# Bind("RESPONSABLE") %>'></asp:Label>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" />
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="nota">
                                        <ItemTemplate>
                                            <asp:Label ID="Lbl_note" runat="server" Text='<%# Bind("NOTA") %>'></asp:Label>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" />
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="fecha de modificacion">
                                        <ItemTemplate>
                                            <asp:Label ID="Lbl_mod" runat="server" Text='<%# Bind("MODIFY") %>'></asp:Label>
                                        </ItemTemplate>
                                        <HeaderStyle HorizontalAlign="Center" />
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>
                        </div>
                        <div class="modal-footer">
                            <asp:Button ID="Btn_download" runat="server" CssClass="btn btn-success" Text='Guardar' OnClick="Btn_download_Click" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
        </asp:ContentPlaceHolder>
    </form>

&时代;
 维护报告

所有这些都在
母版页
上,并通过
runat=“server”

转换成
格式,对我来说最好的方法就是使用ClosedXML

这非常简单,您可以添加排序和内置过滤功能

以下是文档中的一个示例:

var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value = "Hello World!";
workbook.SaveAs("HelloWorld.xlsx");

对我来说最好的方法就是使用ClosedXML

这非常简单,您可以添加排序和内置过滤功能

以下是文档中的一个示例:

var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value = "Hello World!";
workbook.SaveAs("HelloWorld.xlsx");
参考本网站

也许看看?那里有数据库,尽管关于如何将gridview转换为Excel文件的答案在那里,代码在上面

参考本网站


也许看看?那里有数据库,尽管关于如何将gridview转换为Excel文件的答案在那里,代码在上面。

您知道您没有生成有效的XLS文件吗?您正在生成一个伪装成XLS文件的HTML文件。那是个可怕的主意。使用能够生成真正Excel文件的库,例如EPPlus、NPOI、ClosedXML、Open XML SDK或Aspose。@mason您有没有参考您所说的内容?参考什么?关于您告诉我的一两个库,您知道搜索引擎是对的吗?我不明白你为什么需要我做你的搜索引擎。你知道你没有生成有效的XLS文件吗?您正在生成一个伪装成XLS文件的HTML文件。那是个可怕的主意。使用能够生成真正Excel文件的库,例如EPPlus、NPOI、ClosedXML、Open XML SDK或Aspose。@mason您有没有参考您所说的内容?参考什么?关于您告诉我的一两个库,您知道搜索引擎是对的吗?我不明白你为什么需要我做你的搜索引擎。