下拉列表数据展示和导出
2017-09-18 17:52
507 查看
1、任务需求
2、数据结构
3、核心代码
2、数据结构
3、核心代码
<div class="right"></div> <div class="select"> <span>请选择学科:</span> <select> <option class="option" value="1" selected="selected">语文</option> <option class="option" value="2">数学</option> <option class="option" value="3">英语</option> <option class="option" value="4">物理</option> <option class="option" value="5">化学</option> <option class="option" value="6">历史</option> <option class="option" value="7">地理</option> <option class="option" value="8">政治</option> <option class="option" value="9">生物</option> </select> </div>
<script id="rpt_table" type="text/template"> <thead> <tr> <%_.each(data.head,function(d){%> <%if(typeof(d)=="string"){%> <th rowspan=2 style="text-align: center;"><%=d%></th> <%}else{%> <th colspan=<%=d.subNum%> style="text-align: center;"><%=d.name%></th> <%}%> <%})%> </tr> <tr> <%_.each(data.head,function(d){%> <%if(typeof(d)!="string"){%> <%_.each(d.subHead,function(e){%> <th style="text-align: center;"><%=e%></th> <%})%> <%}%> <%})%> </tr> </thead> <tbody> <%_.each(data.data, function(d,i){%> <tr style="text-align: center;"> <%_.each(d, function(e,j){%> <%if(e == null || e == 'null'){%> <td style="text-align:right;">—</td> <%}else if(Number(e) <= 1 && Number(e) != 0 && j % 2 == 1){%> <td><%=(e*100).toFixed(2)%></td> <%}else{%> <td style="text-align:center"><%=e%></td> <%}%> <%})%> </tr> <%})%> </tbody> </script>
<script> ZX.checkOnline(true, '../../timeout.html', '../../sys/getSession'); jQuery(document).ready(function() { $.cookie.json = true; var RptController = function(){ var schId = zxCookie.getCookieActInfoValue('schId'), gid = $.url(location.href).param('gid'), examId = $.url(location.href).param('examId'), xkId = $.url(location.href).param('xkId'), examName = $.url(location.href).param('examName'); var rpttable = function(){ var durl = "../../"+schId+"/zy/rpt18027/"+schId+'/'+examId+'/'+xkId; ZX.getDataByAjax( durl, 'json', function(res) { function render(a_data){ $('.rpt_cls_keyLine').zxtable({ data: a_data, template: '#rpt_table', exportURL: encodeURI('../../'+schId+'/zy/export1/'+schId+'/'+examId+'/'+examName+'/'+xkId), needDataTable: true, fixedHeader: true, ordering:false, orderby:[], callBack: function(){ $($(window.parent.document).find('.rpt_summary')[0]).height(0); } }); } var a_data_e = {}; a_data_e["data"] =res; render(a_data_e); }, function() { //TODO异常处理 $('#DataTables_Table_0').html('').html('<tr><td>没有这科考试数据.</td></tr>'); } ); } return{ init:function(){ rpttable(); } } }(); Pace.start(); RptController.init(); $("option").click(function(){ $("option").removeAttr("selected"); $(this).attr("selected","selected"); var xkId = $(this).attr("value"); var schId = zxCookie.getCookieActInfoValue('schId'), gid = $.url(location.href).param('gid'), examId = $.url(location.href).param('examId'), examName = $.url(location.href).param('examName'); var durl = "../../"+schId+"/zy/rpt18027/"+schId+'/'+examId+'/'+xkId; ZX.getDataByAjax( durl, 'json', function(res) { function render(a_data){ $('.rpt_cls_keyLine').zxtable({ data: a_data, template: '#rpt_table', exportURL: encodeURI('../../'+schId+'/zy/export1/'+schId+'/'+examId+'/'+examName+'/'+xkId), needDataTable: true, fixedHeader: true, ordering:false, orderby:[], callBack: function(){ $($(window.parent.document).find('.rpt_summary')[0]).height(0); } }); } var a_data_e = {}; a_data_e["data"] =res; render(a_data_e); }, function() { //TODO异常处理 $('#DataTables_Table_0').html('').html('<tr><td>没有这科考试数据.</td></tr>'); } ); }); }); </script>
@RequestMapping(value = "/rpt18027/{schId}/{examId}/{xkId}", method = RequestMethod.GET) @ResponseBody public JSONObject getGradeImportLine1( @PathVariable("schId") Long schId, @PathVariable("examId")Long examId, @PathVariable("xkId")Integer xkId ) throws Exception { String type = "18027"; String moudleUrl = getDsiUrl(type); JSONObject param = new JSONObject(); param.put("schId", schId); param.put("examId", examId); param.put("xkId", xkId); HttpsClientUtil httpsClientUtil = HttpsClientUtil.getInstance(); String httpOrgCreateTestRtn =null ; try { String urlModule = moudleUrl + "?param=" +URLEncoder.encode(param.toJSONString(), "UTF-8"); httpOrgCreateTestRtn = httpsClientUtil.getResponseBodyAsString(urlModule, null); JSONObject jsonData = JSONObject.parseObject(httpOrgCreateTestRtn); return jsonData; } catch (Exception e) { logger.error(e.getMessage()); return getErrorResult(""); } } @RequestMapping(value = "/export1/{schId}/{examId}/{examName}/{xkId}", method = RequestMethod.GET) @ResponseBody public void exportExcel1(HttpServletRequest request, HttpServletResponse response, @PathVariable(value = "schId") Long schId, @PathVariable(value = "examId") Long examId, @PathVariable(value = "examName") String examName, @PathVariable("xkId")Integer xkId) { String xk = ""; switch (xkId) { case 1: xk = "语文"; break; case 2: xk = "数学"; break; case 3: xk = "英语"; break; case 4: xk = "物理"; break; case 5: xk = "化学"; break; case 6: xk = "历史"; break; case 7: xk = "地理"; break; case 8: xk = "政治"; break; case 9: xk = "生物"; break; } try { // 注意协议头有字节数限制,所以fileName不能超长 String fileName = getExcelName(request, "单科试题得分率统计"+"_"+examName+"_"+xk); response.reset(); response.setContentType("application/vnd.ms-excel"); // 改成输出excel文件 response.setHeader("Content-disposition", "attachment; filename=" + fileName); RptSch18027impl prsSch = new RptSch18027impl(); String type = "18027"; String moudleUrl = getDsiUrl(type); JSONObject param = new JSONObject(); param.put("schId", schId); param.put("examId", examId); param.put("xkId", xkId); HttpsClientUtil httpsClientUtil = HttpsClientUtil.getInstance(); String httpOrgCreateTestRtn =null ; JSONObject jsonData = null; try { String urlModule = moudleUrl + "?param=" +URLEncoder.encode(param.toJSONString(), "UTF-8"); httpOrgCreateTestRtn = httpsClientUtil.getResponseBodyAsString(urlModule, null); jsonData = JSONObject.parseObject(httpOrgCreateTestRtn); } catch (Exception e) { logger.error(e.getMessage()); } JSONObject jar = jsonData.getJSONObject("data"); JSONArray jarr = new JSONArray(); jarr.add(jar); prsSch.exportExcel8027(request, response, jarr, xk); } catch (Exception e) { logger.warn(e.getMessage()); } } }
package com.doofen.ctrl.rpt.Impl; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.ss.util.CellRangeAddress; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.zxt.framework.export.RptExcelDomain; public class RptSch18027impl extends RptBase{ /** * * @Title: exportExcel * @Description: 导出Excel * @param param * @return 参数 * @return void * @throws */ public void exportExcel8027(HttpServletRequest request, HttpServletResponse response, JSONArray jarr, String xk) throws Exception { OutputStream os = null; try { RptExcelDomain rptDo = new RptExcelDomain(); rptDo.setSheetName("多分考情报告——"+"单科试题得分率统计——"+xk); rptDo.setSheetTitle("多分考情报告——"+"单科试题得分率统计——"+xk); rptDo.setSheetData(jarr); List<RptExcelDomain> sheets = new ArrayList<RptExcelDomain>(); sheets.add(rptDo); setSheets(sheets); os = response.getOutputStream(); writeExcel(os, true); } catch (Exception e) { throw new Exception("Export Excel failed, beacause" + e.getMessage()); } } protected void writeExcelSheetSelf(RptExcelDomain rptDo) { JSONArray ajarr = rptDo.getSheetData(); int index = 0; JSONArray data = ajarr.getJSONObject(index).getJSONArray("data"); JSONArray head = ajarr.getJSONObject(index).getJSONArray("head"); String[] simpleHeads = { "题号","题型","知识点","年级得分率(%)","年级答错人数"}; HSSFSheet sheet = wb.createSheet(rptDo.getSheetName().split("\\|")[0]); HSSFRow row = null; // 创建第一行 row = sheet.createRow(0); HSSFCell cell_title = row.createCell(0); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, ajarr.getJSONObject(0).getInteger("width")-1)); cell_title.setCellStyle(this.getStyleTitle()); cell_title.setCellValue(rptDo.getSheetTitle()); // 创建第二行 row = sheet.createRow(1); cell_title = row.createCell(0); sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, ajarr.getJSONObject(0).getInteger("width")-1)); // 创建表头 第一行 row = sheet.createRow(2); HSSFCell cell_header = null; for(int i=0;i<simpleHeads.length;i++){ cell_header = row.createCell(i); sheet.addMergedRegion(new CellRangeAddress(2, 3, i, i)); cell_header.setCellStyle(this.getStyleHeader()); cell_header.setCellValue(simpleHeads[i]); } int startCol = simpleHeads.length; for(int i=simpleHeads.length;i<head.size();i++){ JSONObject headJob = head.getJSONObject(i); cell_header = row.createCell(startCol); sheet.addMergedRegion(new CellRangeAddress(2, 2, startCol, startCol+headJob.getInteger("subNum")-1)); cell_header.setCellStyle(this.getStyleHeader()); cell_header.setCellValue(headJob.getString("name")); startCol = startCol+headJob.getInteger("subNum"); } // 创建表头 第二行 row = sheet.createRow(3); startCol = simpleHeads.length; for (int i = simpleHeads.length;i<head.size();i++) { for(int j=0;j<head.getJSONObject(i).getJSONArray("subHead").size();j++){ cell_header = row.createCell(startCol); cell_header.setCellStyle(this.getStyleHeader()); cell_header.setCellValue(head.getJSONObject(i).getJSONArray("subHead").getString(j)); startCol++; } } // 构建数据 HSSFCell cell_data = null; int startRow = 4; int startDataCol = 0; for (int i = 0; i < data.size(); i++) { row = sheet.createRow(startRow); startDataCol = 0; for(int j = 0 ;j<data.getJSONArray(i).size();j++){ cell_data = row.createCell(startDataCol); cell_data.setCellValue(data.getJSONArray(i).getString(j)); cell_data.setCellStyle(this.getStyleCellBold()); startDataCol++; } startRow++; } } }
相关文章推荐
- 表格点击当前行,在其下边展示其子信息列表(即下拉显示数据)
- 展示医院科室的下拉列表(连接数据库数据)
- 下拉列表无级数据绑定
- 实现密码框的内容校验,并实现下拉列表的所列的展示形式
- VC中ComboBox下拉列表不显示数据或只显示一行问题
- Three20研究院之TabBar与下拉列表访问数据与刷新(五)
- Three20之TabBar与下拉列表访问数据与刷新(五)
- jquery 多级联动下拉列表含(数据模型)
- 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建
- Select下拉列表选择自动提交form表单数据
- repeater内嵌套下拉列表绑定数据.
- 利用js和css实现Bootstrap下拉列表数据过滤
- Ajax动态为下拉列表添加数据
- ajax+jquery+flea+smarty实现了通过选择下拉列表动态显示相应的数据
- 使用JSON来做数据传输的动态下拉列表(转自http://j2ee.blog.sohu.com/68011726.html)
- ssm导出列表数据
- iphone利用线程实现数据的加载,并展示在table列表中
- Android中ListView实现展示列表数据
- AngularJS中ng-options实现下拉列表的数据绑定
- Android一个Fragment展示列表网络数据