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

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

下面是具体方法:


        #region  DataTable导出到Excel
        /// <summary>
        /// DataTable导出到Excel
        /// </summary>
        /// <param name="pData">DataTable</param>
        /// <param name="pFileName">导出文件名</param>
        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 = "<table border=\"1\" style=\"background-color:Gray;font-weight:bold;\"><tr>";
                for (int i = 0; i < pData.Columns.Count; i++)
                {
                    strHeader += "<td>" + pData.Columns[i].ColumnName + "</td>";
                }
                strHeader += "</tr></table>";
                #endregion
                TableSB.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
                foreach (DataRow orow in pData.Rows) {
                    TableSB.Append("<tr>");
                    for (int i = 0; i < pData.Columns.Count; i++)
                    {


                        if (orow[i].ToString().StartsWith("0") && !orow[i].ToString().StartsWith("0.")) 
                            TableSB.Append(string.Format("<td style='mso-number-format:general;mso-number-format:\"{1}\"'>{0}</td>", orow[i].ToString(), @"\@"));
                        else
                            TableSB.Append("<td >" + orow[i].ToString() + "</td>");                                           
                    }
                    TableSB.Append("</tr>");
                }
                TableSB.Append("</table>");
                string strMeta = "<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=UTF-8\"/>";
                curContext.Response.Write(strMeta + strHeader + TableSB.ToString());
                curContext.Response.End();
            }
        }
        #endregion

没有更多推荐了,返回首页