您的位置:首页 > 其它

下拉列表数据展示和导出

2017-09-18 17:52 507 查看
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++;
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: