
ireport设计报表
//别骂,我是比较懒。ireport表格ireport表格ireport设计模板做的报表






绑定多个数据源,list放到map中。public String exportToHTML(){ try { /** 模板的位置*/ //指定路径 String fileName = "D:/ireportLib/template/pd_temple_report.jrxml";// 我们就是根据它生成报表的 //动态路径,存放在服务器webroot的路径下// String fileName = ReportAction.class.getResource("/").toString().substring(6) +"pd_temple_report.jrxml"; //---end/** --生成html的位置和名稱*/ //指定路径 Date now = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String nowTime = dateFormat.format( now );String outFileNameHtml = "D:/ireportLib/output/"+nowTime+".pdf";//动态路径,存放在服务器指定文件夹下// String outFileNameHtml = Application.class.getResource("Application.class") .toString();// int index = outFileNameHtml.indexOf("WEB-INF");// if (index == -1) {// index = outFileNameHtml.indexOf("bin");// }// outFileNameHtml = outFileNameHtml.substring(0, index);// if (outFileNameHtml.startsWith("jar")) {// outFileNameHtml = outFileNameHtml.substring(10);// } else if (outFileNameHtml.startsWith("file")) {// outFileNameHtml = outFileNameHtml.substring(6);// }// if (outFileNameHtml.endsWith("/")) {// outFileNameHtml = outFileNameHtml.substring(0, outFileNameHtml.length() - 1);// }//outFileNameHtml = outFileNameHtml+"/reportOutput/"+"StatisticalReports.html";//---end//暂时设置项目id为1 projectId = 1;/** 饼状图*/ //获取pie的数据 List<Map<String, Object>> list1 = urlDetailBeanService.getUrlDetailGroupByScore(projectId); //pie的list List<Report> pieList = new ArrayList<Report>(); //pieList赋值 for (Map<String, Object> map : list1) {Report pieData = new Report(//int,string,stringInteger.valueOf(map.get("count").toString()),//个数map.get("score").toString(),//名称"分数在["+map.get("score").toString()+"]之间的页面有["+Integer.valueOf(map.get("count").toString())+"]个");//描述pieList.add(pieData); } //--end/** 柱状图*/ //获取柱状图的数据 List list2 = urlDetailRuleService.getCountRuleName(projectId); //柱状图的list List<Report> barList = new ArrayList<Report>(); //barList赋值 if (list2.size() > 0) {for (int i = 0; i < list2.size(); i++) {Object[] obj = (Object[]) list2.get(i);Report barData = new Report(//string,int,stringobj[0].toString(),//名称Integer.valueOf(obj[1].toString()),//个数obj[0].toString()+"["+Integer.valueOf(obj[1].toString())+"]个页面");//描述barList.add(barData);} } //--end/** 规则评分*/ //查询所有记录 List<UrlDetailBean> list3 = urlDetailBeanService.getByProjectId("1"); //获取二维数组内部索引的总数 int resultSize=0;Map<String,String> map = new HashMap<String, String>();for(int k=0;k<list3.size();k++){UrlDetailBean udb = list3.get(k);String str = new String(udb.getRuleInfo(), "GB2312");JSONObject jsonlist = JSONObject.fromObject(str);JSONArray results = (JSONArray)jsonlist.get("results");//netinfo scanid----urlmap.put(udb.getScanUrlId().toString(), jsonlist.get("url").toString());resultSize+=results.size(); }/** 网络请求* start*///pd_url_detail_netinfo查询的条件 String scanid=""; //把map的key全部取出来 Set<Map.Entry<String, String>> set=map.entrySet();for (Iterator <Map.Entry<String, String>> iterator = set.iterator(); iterator.hasNext();) {Map.Entry<String, String> entry = (Map.Entry<String, String>) iterator.next(); //String key=entry.getKey();scanid =scanid+ entry.getKey()+",";//String valueString=entry.getValue();}String scanidData = scanid.substring(0, scanid.length()-1);List<UrlDetailNetInfo> list4 = urlDetailNetInfoService.getNetInfoByScanids(scanidData);String [][] data2 = new String[list4.size()][9];for(int i=0;i<list4.size();i++){String [] eachRowData = new String[9];UrlDetailNetInfo netinfoBean = list4.get(i);String urlStr = map.get(netinfoBean.getScanUrlId().toString());data2[i][0] =urlStr;data2[i][1] =netinfoBean.getStarted().toString();data2[i][2] =netinfoBean.getTime().toString();data2[i][3] =netinfoBean.getSent().toString();data2[i][4] =netinfoBean.getReceived().toString();data2[i][5] =netinfoBean.getMethod().toString();data2[i][6] =netinfoBean.getResult().toString();data2[i][7] =netinfoBean.getMimeType().toString();data2[i][8] =netinfoBean.getUrl().toString(); } String [] colName1 = new String[]{"SCANURLID","STARTED","TIME","SENT","RECEIVED","METHOD","RESULT","MIMETYPE","URL"}; DefaultTableModel tableMode1 = new DefaultTableModel(data2,colName1); JRTableModelDataSource netInfolist = new net.sf.jasperreports.engine.data.JRTableModelDataSource(tableMode1);//end/** 规则评分* start*///定义一个n行4列的二维数组 String [][] data = new String[resultSize][4]; //往数组封装数据//作为二维数组的内部索引 int indexOf =0; for(int k=0;k<list3.size();k++){UrlDetailBean udb = list3.get(k);String str = new String(udb.getRuleInfo(), "GB2312");JSONObject jsonlist = JSONObject.fromObject(str);JSONArray results = (JSONArray)jsonlist.get("results");String url = jsonlist.get("url").toString();if(k==0){indexOf= results.size();}for(int j=0;j<results.size();j++){String [] eachRowData = new String[4];JSONObject object =(JSONObject) results.get(j);if(k!=0){data[indexOf+j][0] = object.get("name").toString();data[indexOf+j][1] = object.get("level").toString();data[indexOf+j][2] = object.get("category").toString();data[indexOf+j][3] = url.toString();if(results.size()==(j+1)){indexOf+=results.size();//保存插入数据的动态索引}}else{//刚开始封装数据data[j][0] = object.get("name").toString();data[j][1] = object.get("level").toString();data[j][2] = object.get("category").toString();data[j][3] = url.toString();}} }// String;// for(int j=0;j<results.size();j++){// JSONObject object =(JSONObject) results.get(j);//name = object.get("name").toString();// }// String [][] data = new String[20][4];// for(int i=0;i<20;i++){// String [] eachRowData = new String[4];// data[i][0] ="one"+(i+1);// data[i][1] = "two"+(i+1);// data[i][2] = "three"+(i+1);//// if(i<10){//data[i][3] = 1+"";// }else{//data[i][3] = 2+"";// }// } String [] colName = new String[]{"name","level","category","url"}; DefaultTableModel tableMode = new DefaultTableModel(data,colName); JRTableModelDataSource rulelist = new net.sf.jasperreports.engine.data.JRTableModelDataSource(tableMode);//--end/** 报告的其他指标参数*/ //获取扫描项目的名称 String appName = "页面检测工具"; //获取扫描页面的总数 Integer total = urlDetailBeanService.getTotalUrlDetail(projectId); //获取页面总体评分 String avg = urlDetailBeanService.getScoreAvg(projectId); //获取页面检测结果 String testResults = " 本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,本次检测对目标应用使用了18条页面性能的检测规则,共发现有85个影响页面性能的页面,影响性能百分比为29%。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28878-1.html
高蛋白
不能去看你