根据高级查询导出excel

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();
        }

DataTable.NewRow()用来创建一个新的Row,为什么还要加回自己dt.Rows.Add()?

2014-08-27 20:08

既然DataRow类型本身的构造函数是不可public访问的,因此必须得像下面这样来创建一个DataRow:

DataTable dt = new DataTable("t1");
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
时间: 2024-10-09 00:28:44

根据高级查询导出excel的相关文章

在ssh框架中使用poi正确导出具有比较高级固定格式的excel 整体过程,查询导出前后台下载

(一) 接需求  :   需求相关   (贴图 ) 生成三核对文件 1.新增三核对菜单页面中,增加生成三核对文件功能按钮,弹窗可根据变电站.电压等级查询定值单. 2.定值单信息以表格形式展示,根据选择情况,生成三核对文件. 整体就是这样的一个需求,分sheet,合并单元格,设置各种单元格格式,要有序号. (二)吐槽 新手,什么都不会,同事直接给了这么一个僵硬的需求,哈哈我当时整个人都是懵逼的.一会总结说. (三)具体流程 全部代码,控制层,service,前台,全都贴在最下面. 1 数据库查询

bos 第4 (区域excel批量导入、区域通用分页查询、分区的添加、分区多条件分页查询、分区导出excel)

BOS项目笔记 第4天 今天内容安排: 1.区域批量导入功能 jQuery OCUpload(一键上传插件).apache POI.pinyin4j 2.实现区域的分页查询 3.对分页代码重构 4.添加分区(combobox下拉框) 5.分区的组合条件分页查询 6.分区数据导出功能 1. 区域数据批量导入功能 1.1 一键上传插件使用 ajax不能做文件上传. 第一步:在jsp页面中引入插件的js文件 <script type="text/javascript" src=&quo

atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结

atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结 1. 主要的流程 查询获得list 读取jsp的table获得标题and 字段的map toexcel(map,list) 2. 提交的html数据结构 _meth=sql     dwr 的元数据 _metadata=xxxx reqDatas.... 作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected] 转载请注明来源: http://blog

java连接MongoDB查询导出为excel表格

背景 因为项目需求.每一个星期须要统计每一个公众号7天的訪问数,月底就须要统计一个月的訪问数,40多个公众号.每次手动统计都须要花费1个小时,总之是一项无技术耗时耗神的手工活. 于是.想写个程序来统计.每次仅仅须要执行下代码,输入一些配置信息就导出为excel表格,直接复制完事,可是水平有限.就仅仅用java写了个. demo下载 下载地址:http://download.csdn.net/detail/musuny/8769499 程序说明 依赖外部jar包 fastjson-1.1.36.j

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab

百万级数据记录量优化查询以及导出EXCEL文件编程

通过对完整软件实例(工程设计流水管理系统)编程讲解,让学员熟悉完整软件布局架构及开发思路.比如从界面布局.登录验证.软件注册程序.到软件发布等知识点,贯穿知识点间联系,提升编程整合能力. 中文编程完整软件实例编程解析之工程设计流水管理系统(8课时) 第1课:整体布局.EXCEL表数据导入到软件数据库编程a.整体布局b.EXCEL表数据导入到软件数据库编程第2课:基本信息预先设置编程a.项目名称预设置 第3课:子项目工程日志流水编程解析a.工程日志流水编程 第4课:子项目设计费发放流水编程解析a.

摘抄:java查询数据导出excel并返回给浏览器下载

maven地址为: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> 好了,废话不多少,上代码 jsp前端代码(根据自己的业务来) <span style="font-size:18px;">

Winform开发框架之通用高级查询模块--SNF快速开发平台3.3-Spring.Net.Framework

最近项目确实忙,但也是一直忙于有关项目和框架技术的事情,也一直致力于改善我的WInform开发框架.使得自己及客户使用起来更加方便,更加友好,更加高效. 在很多程序模块中都很常见,也是给客户扩展查询的一个很好的补充,由于我一直希望我的Winform开发框架能够精益求精,所以做了这个模块,希望对今后我自己所有的项目以及框架本身,都能高效的使用. 1.通用高级查询模块的用途及介绍 既然称之为通用查询模块,那么他就不能与具体的表字段有耦合关系,但是要实现具体的查询,必须通过某种方式进行属性传递,实现更

sql server通过T-SQL导出Excel到磁盘

ALTER PROCEDURE [dbo].[pro_ImportExcelByTime] AS BEGIN --第一步,开启高级功能 EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell',1 RECONFIGURE; --第二步,bcp导出excel declare @file_path nvarchar(50),@file_name nvarchar(500),@e