java导出功能后台代码

  Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        CallAnalysisReportVo vo = new CallAnalysisReportVo();
        try {
            ResultSetMetaData rsmd;//接收元数据
            conn = jdbcTemplate.getDataSource().getConnection();
            //设置sql参数,date1,date2是传过来的参数,没必要是两个,也可以是其他数量
            ps = conn.prepareStatement("EXEC dbo.P_mbr_get_customer_call_rpt ?,?,?");
            if(date1 != null){
                ps.setObject(1,new java.sql.Date(date1.getTime()));
            }else{
                ps.setObject(1,null);
            }
            if(date2 != null){
                ps.setObject(2,new java.sql.Date(date2.getTime()));
            }else{
                ps.setObject(2,null);
            }
            ps.setObject(3,callType);
            //获取结果集
            rs = ps.executeQuery();
            List<Map<String,Object>> list = New.list();//接收数据
            List<String> headers = New.list();//接收表头数据
            int columnCount = 0,i;
            Map<String,Object> map;//用于接收单行数据
            String key;//键
            Object objV;//值
            int index = 0;//标记遍历行索引
            //设置固定表头,CCID1,CCID2这两个要分别写在字段的最前面和最后面,不然会产生意外,
            String[] staticHeaders = {"CCID1","来电分组","来电类别","本年累计","时间段前累计","时间段累计","CCID2"};
            while (rs.next()){
                rsmd = rs.getMetaData();
                if(columnCount == 0){
                    columnCount = rsmd.getColumnCount();
                }
                map = New.lMap();//分配空间
                index++;
                for (i = 1;i <= columnCount;i++){//按列数遍历
                    if(i <= staticHeaders.length){
                        key = staticHeaders[i-1];
                    }else{
                        key = rsmd.getColumnName(i);//key
                    }
                    if(index == 1){//第一次,添加表头属性
                        headers.add(key);
                    }
                    objV = JdbcUtils.getResultSetValue(rs,i);
                    map.put(key,objV);
                }
                list.add(map);//添加一行
            }
            vo.setDatas(list);//将数据添加至报表对象
            vo.setHeaders(headers);//将表头添加至报表对象
            return vo;
        }catch (SQLException e){
            throw new RabbitJdbcException(String.format("JdbcTemplate.doGetCallAnalysisReport执行查询时出现异常:s%.",e.getMessage()));
        }finally {
            JdbcUtils.free(conn,ps,rs);
        }

此代码请不要盗用和用于商业用途及违法行为,一经发现将严肃处理!!!!!!!!!!!!

猜你喜欢

转载自blog.csdn.net/qq_42689281/article/details/83829503