excel表格导出集锦repeater实用,和普通用法

下面导出excel主要解决repeater产生乱码的问题

 

 public void CreateExcels(DataSet ds, string typeid, string FileName)
        {
            HttpResponse resp;
            resp = Page.Response;
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
           // resp.ContentType = "application/vnd.ms-excel";
            string colHeaders = "", ls_item = "";
            int i = 0;

 

            //定义表对象和行对像,同时用DataSet对其值进行初始化
            DataTable dt = ds.Tables[0];
            DataRow[] myRow = dt.Select("");
            // typeid=="1"时导出为EXCEL格式文档;typeid=="2"时导出为XML格式文档
            if (typeid == "1")
            {
                //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
                for (i = 0; i < dt.Columns.Count; i++)
                {
                    if (i == dt.Columns.Count - 1)
                    {
                       // colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                        switch (dt.Columns[i].Caption.ToString())
                        {
                            case "R":
                                colHeaders += "序号" + "\n";
                                break;
                        }
                           
                    }
                    else
                    {
                       // colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                        switch (dt.Columns[i].Caption.ToString())
                        {
                            case "C_EMPOID":
                                colHeaders += "主键编号" + "\t";
                                break;
                            case "C_NAME":
                                colHeaders += "姓名" + "\t";
                                break;
                            case "C_OPERATETIME":
                                colHeaders += "操作时间" + "\t";
                                break;
                            case "C_OPERATOR":
                                colHeaders += "操作人员" + "\t";
                                break;
                            case "C_APPROVEUNIT":
                                colHeaders += "认证单位" + "\t";
                                break;
                            case "C_APPROVEUNITTYPE":
                                colHeaders += "认证类型" + "\t";
                                break;
                            case "C_APPROVEDATE":
                                colHeaders += "认证时间" + "\t";
                                break;
                            case "C_TREATMENT":
                                colHeaders += "待遇" + "\t";
                                break;
                            case "ISVALID":
                                colHeaders += "是否有效" + "\t";
                                break;
                            case "PROJECTNAME":
                                colHeaders += "参与项目名称" + "\t";
                                break;
                            case "PROJECTDESCRIPT":
                                colHeaders += "参与项目介绍" + "\t";
                                break;
                            case "GAINIFO":
                                colHeaders += "获得荣誉信息" + "\t";
                                break;
                            case "DATAUPLOAD":
                                colHeaders += "资料上传" + "\t";
                                break;
                            case "C_COID":
                                colHeaders += "系统编号" + "\t";
                                break;
                            case "C_EXPERTTYPE":
                                colHeaders += "专家类型" + "\t";
                                break;

 

                        }
                            
                    }
                }
                //向HTTP输出流中写入取得的数据信息
                resp.Write(colHeaders);
                //逐行处理数据
                foreach (DataRow row in myRow)
                {
                    //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
                    for (i = 0; i < dt.Columns.Count; i++)
                    {

 

                        if (i == dt.Columns.Count - 1)
                        {
                            ls_item += row[i].ToString() + "\n";
                        }
                        else
                        {
                            ls_item += row[i].ToString() + "\t";
                        }
                    }
                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
                    resp.Write(ls_item);
                    ls_item = "";
                }
            }
            else
            {
                if (typeid == "2")
                {
                    //从DataSet中直接导出XML数据并且写到HTTP输出流中
                    resp.Write(ds.GetXml());
                }
            }
            //写缓冲区中的数据到HTTP头文档中
            resp.End();
        }

新思路方法,gradeview替换repeater控件导出excel表

 protected void Button1_Click(object sender, EventArgs e)
        {
            setExcel();
            ExcelExporter.CreateExcel((DataSet)Session["dataSet"], DateTime.Now.ToString() + ".xls", "application/ms-excel", this.Page);
        }
        protected void setExcel()
        {
            DataSet ds1 = IBLL.getDataBySqlO(@"a.C_EMPOID,a.C_NAME,a.C_OPERATETIME,a.C_OPERATOR,a.C_APPROVEUNIT,a.C_APPROVEUNITTYPE,a.C_APPROVEDATE,a.C_TREATMENT,
a.ISVALID,a.PROJECTNAME,a.PROJECTDESCRIPT,a.GAINIFO,a.DATAUPLOAD,a.C_COID,B.EXPERTTYPE as C_EXPERTTYPE", @"ZJXX_EXPERTINFO a
inner join zjxx_experttype b on B.EXPERTCODE=A.C_EXPERTTYPE and B.ISVALID=1", where);

            GridView1.DataSource = ds1;
            GridView1.DataBind();
            DataTable rowHead = IBLL.getDataBySqlO("df.id,fieldename,fieldcname", "data_fields df,data_tables dt",
            " dt.id=df.tableid and df.isvalid=1 and tableid=19 order by df.id").Tables[0];

            for (int o = 0; o < GridView1.Rows[0].Cells.Count; o++)
            {
                String rName = "";

                for (int j = 0; j < rowHead.Rows.Count; j++)
                {
                    rName = rowHead.Rows[j]["fieldename"].ToString();

                    if (GridView1.HeaderRow.Cells[o].Text == rName)
                    {
                        GridView1.HeaderRow.Cells[o].Text = rowHead.Rows[j]["fieldcname"].ToString();
                        ds1.Tables[0].Columns[o].ColumnName = rowHead.Rows[j]["fieldcname"].ToString();

                    }
                }

            }
            Session.Add("dataSet", ds1);
        }

下面是普通用法

 Response.Clear();
            Response.Buffer = true;
            Response.Charset = "utf-8";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("名称", System.Text.Encoding.UTF8) + ".xls");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); //设置输出流为简体中文
            Response.ContentType = "application/ms-excel"; //设置输出文件类型为excel文件。
            this.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);
            // repeater控件的ID
            this.Repeater1.RenderControl(oHtmlTextWriter);
            Response.Write(oStringWriter.ToString());
            Response.End();

导出另类样式的excel表

 

  //ExcelExporter.CreateExcel((DataSet)Session["dataset"], DateTime.Now.ToString() + ".xls", "application/ms-excel", this.Page);
            // ExcelExporter.CreateExcelO((DataSet)Session["dataset"], DateTime.Now.ToString() + ".xls", "application/ms-excel", this.Page);
            Response.Clear();
            Response.Buffer = true;
            //Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString()+".xls");
            // Response.AddHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString() + ".xls");

 

            Response.Charset = "utf-8";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            string names = DateTime.Now.ToString() + ".xls";
            //Response.Write(names);
            Response.AddHeader("content-disposition", "attachment;filename=" + names);

 

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

 

            //System.IO.StreamWriter write = new System.IO.StreamWriter();
            System.IO.StringWriter write = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter html = new HtmlTextWriter(write);
            Repeater1.RenderControl(html);
            Response.Write(write.ToString());
            Response.Flush();
            Response.End();

 前台方法导出Excel 

 //导出Excel  
        function AllAreaExcel(objtableid) {
            var oXL = new ActiveXObject("Excel.Application");
            var oWB = oXL.Workbooks.Add();
            var oSheet = oWB.ActiveSheet;
            var sel = document.body.createTextRange();
            sel.moveToElementText(document.getElementById(objtableid));
            sel.select();
            sel.execCommand("Copy");
            oSheet.Paste();
            oXL.Visible = true;
        }  

      <input type="button" id="output" οnclick='AllAreaExcel("table1")'; value="导出" class="buttonStyle"/> 

转载于:https://www.cnblogs.com/s-y-l/archive/2011/12/23/2299008.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值