博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根据高级查询导出excel
阅读量:4350 次
发布时间:2019-06-07

本文共 5161 字,大约阅读时间需要 17 分钟。

protected void ImageButton7_Click(object sender, ImageClickEventArgs e)        {            string D_where = string.Empty;            if (string.IsNullOrEmpty(txtStart.Value) == false)            {                D_where += " and to_char(S_IN_DATE,'yyyy-mm-dd')>='" + txtStart.Value + "'";            }            if (string.IsNullOrEmpty(txtEnd.Value) == false)            {                D_where += " and to_char(S_IN_DATE,'yyyy-mm-dd')<='" + txtEnd.Value + "'";            }            if (DropDownList1.SelectedValue != "0000" && DropDownList1.SelectedValue != "")            {                D_where += " and F_SALEOUT_O='" + DropDownList1.Items[DropDownList1.SelectedIndex].Text + "'";            }            if (DropDownList2.SelectedValue != "0000" && DropDownList2.SelectedValue != "")            {                D_where += " and F_SALEOUT_T='" + DropDownList2.Items[DropDownList2.SelectedIndex].Text + "'";            }            string sql = @"select XS_DATE 销售日期,F_ORDERID 服务单号,G_NAME 被保人姓名,G_CARDNO 被保人身份证号,F_ENSURE 被保金额,F_SERVICE 服务费用,MEDICAL_COST 医疗成本,case when (F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100)) - 400 - ((F_ENSURE * 60) / 3000)>0 then (F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100)) - 400 - ((F_ENSURE * 60) / 3000) else 0 end  合作推广费用小,(1 - (1 / (F_ENSURE / 3000))) * ((F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100))) + 200 合作推广费用大,((1 - (1 / (F_ENSURE / 3000))) * ((F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100))) + 200)-(case when (F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100)) - 400 - ((F_ENSURE * 60) / 3000)>0 then (F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100)) - 400 - ((F_ENSURE * 60) / 3000) else 0 end) 差价  FROM ACCEPTANCE A, U_PROFIT U, Y_ORDERS O,MEDICALTYPE M WHERE A.U_PROFIT_ID = U.ID AND O.ID = A.ORDER_ID and O.f_saleout_stype=m.medical_id and  S_STUSES in (2) " + D_where + "";            DataTable dt = DBUtility.DBHelper.GetDataTable(sql);            string sql2 = @"select  sum(F_ENSURE) a,sum(F_SERVICE) b,sum(case when (F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100)) - 400 - ((F_ENSURE * 60) / 3000)>0 then (F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100)) - 400 - ((F_ENSURE * 60) / 3000) else 0 end) c,sum((1 - (1 / (F_ENSURE / 3000))) * ((F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100))) + 200) d,sum(((1 - (1 / (F_ENSURE / 3000))) * ((F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100))) + 200)-(case when (F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100)) - 400 - ((F_ENSURE * 60) / 3000)>0 then (F_SERVICE * 0.942) - (F_ENSURE * (MEDICAL_COST / 100)) - 400 - ((F_ENSURE * 60) / 3000) else 0 end)) e  FROM ACCEPTANCE A, U_PROFIT U, Y_ORDERS O,MEDICALTYPE M WHERE A.U_PROFIT_ID = U.ID AND O.ID = A.ORDER_ID and O.f_saleout_stype=m.medical_id and  S_STUSES in (2) " + D_where + "";            DataTable num = DBUtility.DBHelper.GetDataTable(sql2);            DataRow dr = dt.NewRow();            dr[dt.Columns.Count - 9] = "合计(¥):";            dr[dt.Columns.Count - 6] = num.Rows[0]["a"].ToString();            dr[dt.Columns.Count - 5] = num.Rows[0]["b"].ToString();            dr[dt.Columns.Count - 3] = num.Rows[0]["c"].ToString();            dr[dt.Columns.Count - 2] = num.Rows[0]["d"].ToString();            dr[dt.Columns.Count - 1] = num.Rows[0]["e"].ToString();            dt.Rows.Add(dr);            ExcelImport(dt, @"HZFYTGDZDExl");                             }        private StringWriter GetStringWriter(DataTable dt)        {            StringWriter sw = new StringWriter();            //读列名               foreach (DataColumn dc in dt.Columns)                sw.Write(dc.ColumnName + "\t");            //读列值               //重新的一行               sw.Write(sw.NewLine);            if (dt != null)            {                foreach (DataRow dr in dt.Rows)                {                    for (int i = 0; i < dt.Columns.Count; i++)                    {                        sw.Write(dr[i].ToString() + "\t");                    }                    sw.Write(sw.NewLine);                }            }            sw.Close();            return sw;        }        protected void ExcelImport(DataTable dt, string ExportFileName)        {            StringWriter sw = GetStringWriter(dt);            //当前编码               HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");            //把输出的文件名进行编码               string fileName = HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8);            //文件名               string str = "attachment;filename=" + fileName + ".xls";            //  sw.ContentType = "application/vnd.ms-excel";            //把文件头输出,此文件头激活文件下载框               HttpContext.Current.Response.AppendHeader("Content-Disposition", str);//http报头文件               HttpContext.Current.Response.ContentType = "application/ms-excel";            this.Page.EnableViewState = false;            Response.Write(sw);            Response.End();        }
View Code

 

2014-08-27 20:08
既然DataRow类型本身的构造函数是不可public访问的,因此必须得像下面这样来创建一个DataRow:
DataTable dt = new DataTable("t1");DataRow dr = dt.NewRow();dt.Rows.Add(dr);

转载于:https://www.cnblogs.com/110abcd/p/4627640.html

你可能感兴趣的文章
Python初学
查看>>
numpy linalg.norm
查看>>
【UOJ】#273. 【清华集训2016】你的生命已如风中残烛
查看>>
【NOI2015】品酒大会
查看>>
内部类单例模式,
查看>>
opensuse13.1 安装 SqliteMan
查看>>
念初三生活
查看>>
zbb20180827 java获取html内容
查看>>
node处理get和post请求
查看>>
【JAVA集合详解】LinkedList
查看>>
面向 例题
查看>>
RSA加密
查看>>
HTML5游戏开发进阶指南
查看>>
ASP.NET GBK读取QueryString
查看>>
[LintCode] 159 Find Minimum in Rotated Sorted Array
查看>>
在reshard过程中,将会询问reshard多少slots:
查看>>
地精排序-最简单的排序算法
查看>>
跑路啦 跑路啦 这个博客废掉啦
查看>>
JQuery 实现返回顶部效果
查看>>
辛苦挣钱买房,结果房产证一直办不下来
查看>>