将DataGrid中的数据导出为Excel的方法

转帖|其它|编辑:郝浩|2008-08-28 13:54:20.000|阅读 1201 次

概述:将DataGrid中的数据导出为Excel的方法

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

        public static void DataTable2Excel(System.Data.DataTable dtData)
        {
            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 (dtData != null)
            {
                // 设置编码和附件格式 
                curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMddHHmmssms") + ".xls");
                curContext.Response.ContentType = "application/ms-excel";
                curContext.Response.ContentEncoding = System.Text.Encoding.UTF7;
                curContext.Response.Charset = "gb2312";
                // 导出excel文件 
                strWriter = new System.IO.StringWriter();
                htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

                // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid 
                dgExport = new System.Web.UI.WebControls.DataGrid();
                dgExport.DataSource = dtData.DefaultView;
                dgExport.AllowPaging = false;
                dgExport.DataBind();

                // 返回客户端 
                dgExport.RenderControl(htmlWriter);
                curContext.Response.Write(strWriter.ToString());
                curContext.Response.End();
            }
        }

        protected void btnOutSaleDatas_Click(object sender, EventArgs e)
        {
            if (dgXSOrder.Items.Count == 0)
            {
                Tools.Alert("当前无可导出数据!", this.Page);
            }
            else
            {
                int totalCjOrders = 0;
                string groupbyname = "CommodityId";
                
                //两个DataGrid,一个为DataSet另外一个为DataTable
                DataSet ds = new DataSet(); 
                DataTable dt2 = new DataTable();
                try
                {
                    ds = Services.OCQueryDriver.GetSaleIsQuickOrerCount(typeof(PhoneCardSaleMerchantOrder), this.strQuery(),true, out totalCjOrders, groupbyname);
                    dt2 = Services.OCQueryDriver.GetSaleIsQuickOrerCount(typeof(PhoneCardSaleMerchantOrder), this.strQuery(), false, out totalCjOrders, groupbyname).Tables[0];
                }
                catch (Exception ex)
                {
                    Tools.Alert(ex.Message, this.Page);
                    return;
                }
                                
                DataTable dt = ds.Tables[0];
                
                
                dt.Columns.RemoveAt(0); //从集合中移除指定索引位置的列(移除第一列)
                DataRow row=dt.NewRow();
                row[0]="快充";
                dt.Rows.InsertAt(row, 0);//将新行插入到集合中的指定位置 (位置为在第一行中插入)
                dt.Columns[0].ColumnName = "产品名称";
                dt.Columns[1].ColumnName ="销售数量";
                dt.Columns[3].ColumnName = "销售收入";
                dt.Columns[2].ColumnName = "结算成本";
                dt.Columns[4].ColumnName = "销售利润";
                DataColumn dc2 = new DataColumn("开始日期");
                DataColumn dc3 = new DataColumn("结束日期");
                DataColumn dcl = new DataColumn("天数");
                dt.Columns.Add(dc2);
                dt.Columns.Add(dc3);
                dt.Columns.Add(dcl);
                if (dt2.Rows.Count > 0)
                {
                    DataRow row2 = dt.NewRow();
                    row2[0] = "慢充";
                    dt.Rows.Add(row2);
                    dt2.Columns.RemoveAt(0);
                    for (int j = 0; j < dt2.Rows.Count; j++)
                    {
                        dt.Rows.Add(dt2.Rows[j].ItemArray);
                    }
                }
                TimeSpan ts = dbEndDate.Value.Date - dbBeginDate.Value.Date;
                int days = ts.Days;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    dt.Rows[i]["开始日期"] = dbBeginDate.Text;
                    dt.Rows[i]["结束日期"] = dbEndDate.Text;
                    dt.Rows[i]["天数"] = days;
                }
                DataTable2Excel(ds.Tables[0]);
            }            
        }


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:个人博客

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP