您的位置:首页 > 其它

导出excel,并且解决身份证科学计数发的问题

2014-09-24 16:36 597 查看
 protected void Button3_Click(object sender, EventArgs e)

    {

        string Year = System.DateTime.Now.Year.ToString();

            string Month = System.DateTime.Now.Month.ToString();

            string Day = System.DateTime.Now.Day.ToString();

            string HH = System.DateTime.Now.Hour.ToString();

            string mm = System.DateTime.Now.Minute.ToString();

            string DateString ="人员报表"+ Year + "-" + Month + "-" + Day + "-" + HH + "-" + mm;

        FarmerDA da = new FarmerDA();

        DataSet ds = new DataSet();

        DataTable dt = new DataTable();

        ds = da.QQ_Farmer_Search_excleDA(Sessionid);

        if (ds != null)

        {

            dt = ds.Tables[0];

            if (dt != null && dt.Rows.Count > 0)

            {

                //dt.Columns.Add("style", "vnd.ms-excel.numberformat:@");

                //dt.Rows[0]["Birthday"].Add("style", "vnd.ms-excel.numberformat:@");

                HttpContext.Current.Response.Clear();

                HttpContext.Current.Response.Charset = "";

                HttpContext.Current.Response.ContentType = "application/vnd.ms-xls";

                HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(DateString + ".xls"));

                StringBuilder table = new StringBuilder();

              

                table.Append("<table style='border:1px solid #000000'><tr>");

                for (int i = 0; i < dt.Columns.Count; i++)

                {

                    table.Append("<td>");

                    table.Append(dt.Columns[i].Caption.ToString()); //标格的标题  

                    table.Append("</td>");

                }

                table.Append("</tr>");

                for (int i = 0; i < dt.Rows.Count; i++)

                {

                    table.Append("<tr>");

                    for (int j = 0; j < dt.Columns.Count; j++)

                    {

                        table.Append("<td style='vnd.ms-excel.numberformat:@'>");

                        table.Append(dt.Rows[i][j].ToString());

                        table.Append("</td>");

                    }

                    table.Append("</tr>");

                }

                table.Append("</table>");

                HttpContext.Current.Response.Write(table);

                HttpContext.Current.Response.End(); 

            }

        }

        DataTable thisTable = dt;

        DataTableExcel(dt, DateString,"a|b|c|d");

    }

 

    #region  DataTable导出到Excel

    /// <summary>

    /// DataTable导出到Excel

    /// </summary>

    /// <param name="pData">DataTable</param>

    /// <param name="pFileName">导出文件名</param>

    /// <param name="pHeader">导出标题以|分割</param>

    public static void DataTableExcel(System.Data.DataTable pData, string pFileName, string pHeader)

    {

        System.Web.UI.WebControls.DataGrid dgExport = null;

        // 当前对话

        System.Web.HttpContext curContext = System.Web.HttpContext.Current;

        // IO用于导出并返回excel文件

        System.IO.StringWriter strWriter = null;

        System.Web.UI.HtmlTextWriter htmlWriter = null;

        if (pData != null)

        {

            string UserAgent = curContext.Request.ServerVariables["http_user_agent"].ToLower();

            if (UserAgent.IndexOf("firefox") == -1)//火狐浏览器

                pFileName = HttpUtility.UrlEncode(pFileName, System.Text.Encoding.UTF8);

            curContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + pFileName + ".xls");

            curContext.Response.ContentType = "application/vnd.ms-excel";

            strWriter = new System.IO.StringWriter();

            htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

            // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid

            dgExport = new System.Web.UI.WebControls.DataGrid();

            dgExport.DataSource = pData.DefaultView;

            dgExport.AllowPaging = false;

            dgExport.ShowHeader = false;//去掉标题

            dgExport.DataBind();

            string[] arrHeader = pHeader.Split('|');

            string strHeader = "<table border=\"1\" style=\"background-color:Gray;font-weight:bold;\"><tr>";

            foreach (string j in arrHeader)

            {

                strHeader += "<td>" + j.ToString() + "</td>";

            }

            strHeader += "</tr></table>";

            // 返回客户端

            dgExport.RenderControl(htmlWriter);

            string strMeta = "<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=UTF-8\"/>";

            curContext.Response.Write(strMeta + strHeader + strWriter.ToString());

            curContext.Response.End();

        }

    }

    #endregion

    public override void VerifyRenderingInServerForm(Control control)

    {

        // Confirms that an HtmlForm control is rendered for

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: