【问题标题】:Export to Excel string column converted to date导出到 Excel 字符串列转换为日期
【发布时间】:2014-02-07 15:40:49
【问题描述】:

我希望将我的数据表导出到 excel。

我有一列的值类似于 2/5 1/5 ... 将此数据导出到 excel 后,它看起来像 02.May 01.May(日期格式)

如何导出此列,以便 excel 将其视为字符串而不是将其转换为日期。?

这是我的 ExportToExcel 方法

protected void ExportToExcel()
{

    DataTable dt = new DataTable();

    dt = Session["aaa"] as DataTable;

    if (dt.Rows.Count > 0)
    {
        string filename = "DownloadMobileNoExcel.xls";
        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
        DataGrid dgGrid = new DataGrid();
        dgGrid.DataSource = dt;
        dgGrid.DataBind();

        //Get the HTML for the control.
        dgGrid.RenderControl(hw);
        //Write the HTML back to the browser.
        //Response.ContentType = application/vnd.ms-excel;
        Response.ContentType = "application/vnd.ms-excel";
        Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
        this.EnableViewState = false;
        Response.Write(tw.ToString());
        Response.End();
    }
}

public override void VerifyRenderingInServerForm(Control control)
{
    /* Verifies that the control is rendered */
}

【问题讨论】:

标签: c# asp.net excel export-to-excel


【解决方案1】:

一种解决方案可能是遍历 DataTable 中导致问题的列的所有单元格,并在当前值之前添加一个单引号 ' 字符。

换句话说,2/5 将变为 '2/5。这应该会强制 Excel 将数据视为文本。

【讨论】:

  • 感谢您的想法,我将列更改为 %40 之类的百分比,然后问题现在解决了。
【解决方案2】:

在这行之前 Response.Write(tw.ToString()); 你必须把这行 Response.Write("<head><style> td {mso-number-format:\\@;} </style></head><body>"); 就这样

你可以在下面看到。

Response.Write("<head><style> td {mso-number-format:\\@;} </style></head><body>");
Response.Write(tw.ToString());

你还可以看到整个代码,它看起来像

protected void ImgExcel_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment; filename=AddGoodsDetails_" + DateTime.Now + ".xls");
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    gvView_2.RenderControl(htmlWrite);
    Response.Write("<head><style> td {mso-number-format:\\@;} </style></head><body>");
    Response.Write(stringWrite.ToString());
    Response.End();
}

gvView_2 是 GridView 的 id,你可以理解我希望这个解决方案对你的问题有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多