【问题标题】:one column in GridView won't export to excel sheetGridView 中的一列不会导出到 Excel 工作表
【发布时间】:2023-03-11 23:27:01
【问题描述】:

我有一个显示来自数据库的字段的 GridView 和一个将此 GridView 导出到 Excel 电子表格的函数,但唯一没有显示的列是 litChecklistNo。

<asp:GridView runat="server" 
                            <Columns>
                                    <asp:BoundField DataField="VehicleReg" HeaderText="Registration" SortExpression="VehicleReg"></asp:BoundField> 
                                    <asp:TemplateField HeaderText="Checklist Number" SortExpression="CheckListNo">
                                        <ItemTemplate>
                                            <asp:Literal ID="litChecklistNo" runat="server"> </asp:Literal>
                                        </ItemTemplate> 
                                    </asp:TemplateField>  
                                    <asp:BoundField DataField="ChecklistDate" HeaderText="Checklist Date" SortExpression="ChecklistDate"  dataformatstring="{0:dd/MM/yyyy}"></asp:BoundField> 
                                    <asp:BoundField DataField="MaintenanceNo" HeaderText="Maintenance No" SortExpression="MaintenanceNo"></asp:BoundField>    
                                </Columns>
                        </asp:GridView>

导出 GridView 的代码:

protected void ToExcel(GridView grid, string Name, string FileName)
    {
        if (!FileName.Contains(".xls"))
        {
            FileName = FileName + ".xls";
        }
        string style = "<style><!--table@page{mso-header-data:\"&C" + Name + " Date/: &D/ Page &P\"; mso-page-orientation:landscape; mso-page-scale:89;}     br     {mso-data-placement:same-cell;}  --></style>";

        Response.Buffer = true;
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("content-disposition", "attachment; filename=" + FileName + "");
        this.EnableViewState = false;
        Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
        Response.Write("<head>");
        Response.Write(style);
        Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1252\">");
        Response.Write("<!--[if gte mso 9]>");
        Response.Write("<xml>");
        Response.Write("<x:ExcelWorkbook>");
        Response.Write("<x:ExcelWorksheets>");
        Response.Write("<x:ExcelWorksheet>");
        Response.Write("<x:Name>" + Name + " Table</x:Name>");
        Response.Write("<x:WorksheetOptions>");
        Response.Write("<x:Panes>");
        Response.Write("</x:Panes>");
        Response.Write("<x:Print>");
        Response.Write("<x:ValidPrinterInfo/>");
        Response.Write("<x:Scale>89</x:Scale>");
        Response.Write("</x:Print>");
        Response.Write("</x:WorksheetOptions>");
        Response.Write("</x:ExcelWorksheet>");
        Response.Write("</x:ExcelWorksheets>");
        Response.Write("</x:ExcelWorkbook>");
        Response.Write("</xml>");
        Response.Write("<![endif]-->");
        Response.Write("</head>");
        Response.Write("<body>");

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

        ClearControls(grid);

        grid.RenderBeginTag(oHtmlTextWriter);
        grid.HeaderRow.RenderControl(oHtmlTextWriter);
        foreach (GridViewRow row in grid.Rows)
        {
            row.RenderControl(oHtmlTextWriter);
        }
        grid.FooterRow.RenderControl(oHtmlTextWriter);
        grid.RenderEndTag(oHtmlTextWriter);

        Response.Write(oStringWriter.ToString());


        Response.Write("</body>");
        Response.Write("</html>");
        Response.End();

    }

litChecklistNo 是 GridView 中的一个链接,单击该链接会打开另一个页面,这就是为什么我没有像在 GridView 的其余部分中那样使用 BoundField 但为什么不将它导出到 Spreed 表?跟Literal有关系吗?

【问题讨论】:

  • 与其手动构建所有标记,不如使用支持正确生成.xlsx 文件的库,例如EPPlusNPOIOpen XML SDK?我在my blog上描述了如何使用EPPlus。
  • @mason 现在我将继续使用此代码。你知道问题可能是什么吗?

标签: c# asp.net excel visual-studio gridview


【解决方案1】:

看看我的帖子。我也无法从我的 gridview 导出到 Excel。但是,我使用母版页从使用该母版页的页面导出。

点击此链接。请注意,这是 VB.net,因此您可以将此代码转换为 C#。

Exporting Gridview to Excel Vb.net

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多