下拉列表数据展示和导出

1、任务需求



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++;
        }

    }
}





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值