简体   繁体   English

如何格式化指数到数字从导出到Excel?

[英]How to format exponent to number from Export to excel?

I am exporting data table to excel and one column is having Phone number in the data table but after export in Excel the phone number coloumn is displaying as exponent. 我正在将数据表导出到excel,并且一列在数据表中包含电话号码,但是在Excel中导出后,电话号码列显示为指数。

I need as number, How to fix this ? 我需要作为号码,该如何解决?

 string fileName = "File" + DateTime.Now.ToString("MMddyyyy_HHmmss") + ".xls";
        Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
        //Response.AddHeader("content-disposition", "attachment;filename=File.xls");
        Response.ContentType = "application/vnd.ms-excel";

        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWriter);
        DataGrid dataExportExcel = new DataGrid();
        dataExportExcel.ItemDataBound += new DataGridItemEventHandler(dataExportExcel_ItemDataBound);
        dataExportExcel.DataSource = dt;
        dataExportExcel.DataBind();
        dataExportExcel.RenderControl(htmlWrite);
        System.Text.StringBuilder sbResponseString = new System.Text.StringBuilder();
        sbResponseString.Append("<html xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:xlExcel8\" xmlns=\"http://www.w3.org/TR/REC-html40\"> <head></head> <body>");
        sbResponseString.Append(stringWriter + "</body></html>");
        Response.Write(sbResponseString.ToString());
        Response.End();

Add the below STYLE to your HTML tag, It will help you.. 将以下STYLE添加到您的HTML标签中,它将为您提供帮助。

<style> table { mso-number-format:'0'; } </style>

like this : 像这样 :

sbResponseString.Append("<html xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:xlExcel8\" xmlns=\"http://www.w3.org/TR/REC-html40\"> <head><style> td { mso-number-format:'0'; } </style></head> <body>");

Full Code: 完整代码:

   protected void btnExcel_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Clear();
        dt.Columns.Add("Phone");
        dt.Columns.Add("Name");
        DataRow Sample = dt.NewRow();
        Sample["Phone"] = 125316245612456124;
        Sample["Name"] = "Pandian";
        dt.Rows.Add(Sample);
        GetExcel(dt);            
    }
    public void GetExcel(DataTable dt)
    {
        string fileName = "File" + DateTime.Now.ToString("MMddyyyy_HHmmss") + ".xls";
        Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
        Response.ContentType = "application/vnd.ms-excel";
        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWriter);
        DataGrid dataExportExcel = new DataGrid();
        dataExportExcel.DataSource = dt;
        dataExportExcel.DataBind();
        dataExportExcel.RenderControl(htmlWrite);
        System.Text.StringBuilder sbResponseString = new System.Text.StringBuilder();
        sbResponseString.Append("<html xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:xlExcel8\" xmlns=\"http://www.w3.org/TR/REC-html40\"> <head><style> table { mso-number-format:'0'; } </style></head> <body>");
        sbResponseString.Append(stringWriter + "</body></html>");
        Response.Write(sbResponseString.ToString());
        Response.End();
    }

Excel Output : Excel输出:

Excel输出

You can use NumberValue and NumberFormat properties 您可以使用NumberValue and NumberFormat properties

Here a sample, set your range 这里是一个示例,设置您的范围

yourSheet.Range[".."].NumberValue = 1234.5678;
yourSheet.Range[".."].NumberFormat = "0.00";

use this td { mso-number-format:"@"; 使用此td {mso-number-format:“ @”; } }

you can prepend a single quote to the phone number before writing it to the cell of the spreadsheat. 您可以在电话号码前加上单引号,然后再将其写入散布的单元格。

like "'1234567890" instead of "1234567890" 例如“'1234567890”,而不是“ 1234567890”

thanks 谢谢

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM