【问题标题】:Export to excel help in GridView在 GridView 中导出到 excel 帮助
【发布时间】:2011-01-06 10:02:13
【问题描述】:

我已经实现了将数据从gridview导出到.net应用程序中的excel表的功能。页面上gridview的渲染输出如下:

不要担心页眉和页脚,因为我正在展示 gridview 的一小部分。 在 excel-sheet 中导出的数据是:

aspx 页面中的代码是针对网格视图中特定货币列的:

<asp:TemplateField HeaderText="Value" >
    <HeaderStyle HorizontalAlign="Left" CssClass="lblBoldTextLeftPadding clsGridHeaderDashboard" />
    <ItemTemplate>
        £<%# Eval("Value") %>
    </ItemTemplate>
    <ItemStyle CssClass="lblNormalTextLeftPadding" Width="10%" VerticalAlign="Top" HorizontalAlign="Left" />
</asp:TemplateField>

正如您在 excel-sheet 中看到的,货币列的值为 [£100],但在网格视图中为 [£100]。

谁能建议我如何从 excel-sheet 输出中删除“”。

我正在使用以下代码来导出功能:

Response.Clear()
Response.AddHeader("content-disposition", "attachment;filename=Report.xls")
Response.Charset = ""
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.ContentType = "application/vnd.xls"
Dim objStringWriter As StringWriter = New StringWriter(sb)
Dim objHtmlTextWriter As HtmlTextWriter = New HtmlTextWriter(objStringWriter)
gvBidTrackingExcel.DataSource = Getdata()
gvBidTrackingExcel.DataBind()
gvBidTrackingExcel.RenderControl(objHtmlTextWriter)
Response.Write(objStringWriter)
Response.End()

【问题讨论】:

    标签: gridview asp.net-2.0 export-to-excel


    【解决方案1】:

    尝试在 Response.ContentType 之后设置字符集和编码类型:

    HttpContext.Current.Response.Charset = "utf-8";
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");
    

    否则:

    如果这不起作用,请尝试将它们设置为文本字段。也许它们会被渲染为浮点数/双精度数。

    这是一个迭代示例,它在导出之前为所有单元格设置了一个类(您必须自定义我的示例,以便它们适用于您的解决方案)

    foreach(GridViewRow row in gridView.Rows)
    {
        if(row.RowType == DataControlRowType.DataRow)
        {
            for(int columnIndex = 0; columnIndex < row.Cells.Count; columnIndex++)
            {
                row.Cells[columnIndex].Attributes.Add("class", "text");
            }
        }
    }
    

    在渲染 GridView 后将样式类添加到文档中

    table.RenderControl(htmlTextWriter);
    string style = @"<style> .text { mso-number-format:\@; text-align:left; } </style> ";
    HttpContext.Current.Response.Write(style);
    

    【讨论】:

      【解决方案2】:

      我在用 unicode 版本替换 £ 时遇到了完全相同的问题,即 £似乎成功了,即

      myTempStr = Replace(myTempStr, "£", "&amp;#163;")
      

      【讨论】:

        猜你喜欢
        • 2021-12-25
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多