zoukankan      html  css  js  c++  java
  • 导出grivied excel

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using System.Text;


    namespace WFWMS.Lib
    {
        public class GridViewExportExcel
        {
           

    HttpResponse Response = null;
            public GridViewExportExcel(HttpResponse response)
            {
                Response = response;
            }
            /// <summary>
            /// 将GridView里的数据导入到Excel文件中,并另存文档,无隐藏列
            /// </summary>
            /// <param name="FileName"></param>
            /// <param name="gv"></param>
            public void Export(string FileName, GridView gv)
            {
                Export(FileName, gv, null, "GB2312");
            }
            public void Exporthtml(string FileName, System.Web.UI.HtmlControls.HtmlTable gv)
            {
                Exporthtml(FileName, gv, null, "GB2312");
            }

            public void Export2(string FileName, GridView gv)
            {
                Export2(FileName, gv, null, "GB2312");
            }
            /// <summary>
            /// 将GridView里的数据导入到Excel文件中,并另存文档,无隐藏列
            /// </summary>
            /// <param name="FileName"></param>
            /// <param name="gv"></param>
            public void Export(string FileName, GridView gv, string strEncode)
            {
                Export(FileName, gv, null, strEncode);
            }
            /// <summary>
            /// 将GridView里的数据导入到Excel文件中,并另存文档,需要隐藏列
            /// </summary>
            /// <param name="FileName">文件名称</param>
            /// <param name="GridViewTeacher">要导出数据的GridView</param>
            public void Export(string FileName, GridView gv, int[] hidColumns, string strEncode)
            {
                //去除分页功能
                if (gv.AllowPaging == true)
                {
                    gv.AllowPaging = false;
                    gv.DataBind();
                }
                gv.BorderWidth = 1;
                //替换服务器控件
                PrepareControlForExport(gv);

                //用来控制添加,删除,编辑等按钮不输出
                if (hidColumns != null)
                {
                    foreach (int i in hidColumns)
                    {
                        gv.Columns[i].Visible = false;
                    }
                }
                Response.Charset = strEncode;
                Response.ContentEncoding = Encoding.GetEncoding(strEncode);
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.GetEncoding(strEncode)).ToString() + ".xls");
                Response.ContentType = "application/ms-excel";//导出excel文件
                Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");
                gv.Page.EnableViewState = false;
                StringWriter tw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(tw);
                gv.RenderControl(hw);
                Response.Write(tw.ToString());
                Response.End();
                //HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
            /// <summary>
            /// 将GridView里的数据导入到Excel文件中,并另存文档,需要隐藏列
            /// </summary>
            /// <param name="FileName">文件名称</param>
            /// <param name="GridViewTeacher">要导出数据的GridView</param>
            public void Export2(string FileName, GridView gv, int[] hidColumns, string strEncode)
            {
                //去除分页功能
                if (gv.AllowPaging == true)
                {
                    gv.AllowPaging = false;
                    gv.DataBind();
                }
                gv.BorderWidth = 1;
                //替换服务器控件
                PrepareControlForExport(gv);

                //用来控制添加,删除,编辑等按钮不输出
                if (hidColumns != null)
                {
                    foreach (int i in hidColumns)
                    {
                        gv.Columns[i].Visible = false;
                    }
                }
                Response.Charset = strEncode;
                Response.ContentEncoding = Encoding.UTF8;
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.GetEncoding(strEncode)).ToString() + ".xls");
                Response.ContentType = "application/ms-excel";//导出excel文件
                gv.Page.EnableViewState = false;
                StringWriter tw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(tw);
                gv.RenderControl(hw);
                Response.Write(tw.ToString());
                Response.End();
                //HttpContext.Current.ApplicationInstance.CompleteRequest();
            }

            public void Exporthtml(string FileName, System.Web.UI.HtmlControls.HtmlTable ht, int[] hidColumns, string strEncode)
            {
                //替换服务器控件
                PrepareControlForExport(ht);

                ////用来控制添加,删除,编辑等按钮不输出
                //if (hidColumns != null)
                //{
                //    foreach (int i in hidColumns)
                //    {
                //        ht.c
                //    }
                //}
                Response.Charset = strEncode;
                Response.ContentEncoding = Encoding.GetEncoding(strEncode);
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.GetEncoding(strEncode)).ToString() + ".xls");
                Response.ContentType = "application/ms-excel";//导出excel文件
                Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");
                ht.Page.EnableViewState = false;
                StringWriter tw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(tw);
                ht.RenderControl(hw);
                Response.Write(tw.ToString());
                Response.End();
            }

            #region Export_UTF8 fo ZGR

            //页面上gvData_RowCreated加上以下代码,导出excel不会成为科学记数法。
            //protected void gvData_RowCreated(object sender, GridViewRowEventArgs e)
            //{
            //    for (int c = 0; c < e.Row.Cells.Count; c++)
            //    {
            //        e.Row.Cells[c].Attributes.Add("style", "vnd.ms-excel.numberformat:@;");
            //    }
            //}


            public void Export_UTF8(string FileName, GridView gv)
            {
                Export_UTF8(FileName, gv, null);
            }
            public void Export_UTF8(string FileName, GridView gv, int[] hidColumns)
            {
                Export_UTF8(FileName, gv, hidColumns, "application/ms-excel", "xls");
            }
            public void Export_UTF8(string FileName, GridView gv, int[] hidColumns, string ContentType, string FileType)
            {
                if (gv.AllowPaging == true)
                {
                    gv.AllowPaging = false;
                    gv.DataBind();
                }

                //替换服务器控件
                PrepareControlForExport(gv);

                //用来控制添加,删除,编辑等按钮不输出
                if (hidColumns != null)
                {
                    foreach (int i in hidColumns)
                    {
                        gv.Columns[i].Visible = false;
                    }
                }


                StringBuilder sb = new StringBuilder();
                StringWriter sw = new StringWriter(sb);
                HtmlTextWriter htw = new HtmlTextWriter(sw);

                Page page = new Page();
                HtmlForm form = new HtmlForm();

                gv.EnableViewState = false;
                page.EnableEventValidation = false;
                page.DesignerInitialize();

                page.Controls.Add(form);
                form.Controls.Add(gv);
                page.RenderControl(htw);

                Response.Clear();
                Response.Buffer = true;
                Response.ContentType = ContentType;
                Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName + "." + FileType);
                Response.Charset = "UTF-8";
                Response.ContentEncoding = Encoding.UTF8;

                Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");

                Response.Write(sb.ToString());

                Response.Write("</body></html>");
                Response.End();
            }
            #endregion

            /// <summary>
            /// 替换服务器控件
            /// </summary>
            /// <param name="control"></param>
            private void PrepareControlForExport(Control control)
            {
                for (int i = 0; i < control.Controls.Count; i++)
                {
                    Control current = control.Controls[i];
                    if (current is LinkButton)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
                    }
                    else if (current is ImageButton)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
                    }
                    else if (current is HyperLink)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
                    }
                    else if (current is DropDownList)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
                    }
                    else if (current is CheckBox)
                    {
                        control.Controls.Remove(current);
                        control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
                    }

                    if (current.HasControls())
                    {
                        PrepareControlForExport(current);
                    }
                }
            }


            /// <summary>
            /// 页面中的 Panel 导出到 Excel
            /// </summary>
            /// <param name="PanelID"></param>
            /// <param name="res"></param>
            /// <param name="fileName"></param>
            public static void PanelToExcel(Panel PanelID, HttpResponse res)
            {

                res.Clear();
                res.Buffer = true;
                res.Charset = "UTF-8";
                res.AppendHeader("Content-Disposition", "attachment;filename=Sheet.xls");
                res.ContentEncoding = System.Text.Encoding.UTF8;
                res.ContentType = "application/vnd.ms-excel";
                PanelID.EnableViewState = false;
                System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
                System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
                PanelID.RenderControl(oHtmlTextWriter);
                res.Output.Write(oStringWriter.ToString());
                res.Flush();
                res.End();
                //HttpContext.Current.ApplicationInstance.CompleteRequest();
            }

            /// <summary>
            /// 页面中的 Panel 导出到 Word
            /// </summary>
            /// <param name="PanelID"></param>
            /// <param name="res"></param>
            /// <param name="fileName"></param>
            public static void PanelToWord(Panel PanelID, HttpResponse res)
            {
                res.Clear();
                res.Buffer = true;
                res.Charset = "UTF-8";
                res.AppendHeader("Content-Disposition", "attachment;filename=Sheet.doc");
                res.ContentEncoding = System.Text.Encoding.UTF8;
                res.ContentType = "application/vnd.ms-word";
                PanelID.EnableViewState = false;
                System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
                System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
                PanelID.RenderControl(oHtmlTextWriter);
                res.Output.Write(oStringWriter.ToString());
                res.Flush();
                res.End();
                //HttpContext.Current.ApplicationInstance.CompleteRequest();
            }

        }
    }

  • 相关阅读:
    Django ajax 实现 loading 效果
    K8S service 简单介绍
    K8S Pod 生命周期 (二)
    异度之刃 Xenoblade 后感
    Nested Prefab Mode 嵌套预制体 保存问题 Dirty
    GIT速成
    Surface电池阈值
    如何删除通知栏无效图标(重置任务栏通知区域)
    Mouse For Winpad
    Re:LieF ~親愛なるあなたへ~ 后感
  • 原文地址:https://www.cnblogs.com/lgxll/p/2811577.html
Copyright © 2011-2022 走看看