DataTable转Excel并对0开头的数值保留0显示

在一般的asp.net导出Excel中都会把数字前的0默认去掉,此方法有效解决这问题。

下面是具体方法:


        #region  DataTable导出到Excel
        ///
        /// DataTable导出到Excel
        ///

        /// DataTable
        /// 导出文件名
        public static void DataTableExcel(System.Data.DataTable pData, string pFileName)
        {
            // 当前对话 
            System.Web.HttpContext curContext = System.Web.HttpContext.Current;
            if (pData != null)
            {
                string UserAgent = curContext.Request.ServerVariables["http_user_agent"].ToLower();
                if (UserAgent.IndexOf("firefox") == -1)//火狐浏览器
                    pFileName = System.Web.HttpUtility.UrlEncode(pFileName, System.Text.Encoding.UTF8);
                curContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + pFileName + ".xls");
                curContext.Response.ContentType = "application/vnd.ms-excel";
                StringBuilder TableSB = new StringBuilder();
 
                #region 标题头
                string strHeader = "";
                for (int i = 0; i < pData.Columns.Count; i++)
                {
                    strHeader += "";
                }
                strHeader += "
" + pData.Columns[i].ColumnName + "
";
                #endregion
                TableSB.Append("");
                foreach (DataRow orow in pData.Rows) {
                    TableSB.Append("");
                    for (int i = 0; i < pData.Columns.Count; i++)
                    {


                        if (orow[i].ToString().StartsWith("0") && !orow[i].ToString().StartsWith("0.")) 
                            TableSB.Append(string.Format("", orow[i].ToString(), @"\@"));
                        else
                            TableSB.Append("");                                           
                    }
                    TableSB.Append("");
                }
                TableSB.Append("
{0}" + orow[i].ToString() + "
");
                string strMeta = "";
                curContext.Response.Write(strMeta + strHeader + TableSB.ToString());
                curContext.Response.End();
            }
        }
        #endregion

你可能感兴趣的:(DataTable转Excel并对0开头的数值保留0显示)