java匯出功能後臺程式碼
阿新 • • 發佈:2018-11-24
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); }
此程式碼請不要盜用和用於商業用途及違法行為,一經發現將嚴肅處理!!!!!!!!!!!!