前台js:
前台框架使用vue.js
function export() {
var url="../xxx/xxx/export?";
if(vm.q.produceName==null) {
url += "&produceName="
}
else {
url += "&produceName=" + vm.q.produceName;
}
if(vm.q.yardName==null) {
url += "&yardName="
}
else {
url += "&yardName=" + vm.q.yardName;
}
if(vm.q.goodsName==null) {
url += "&goodsName="
}
else {
url += "&goodsName=" + vm.q.goodsName;
}
if(vm.q.levelName==null) {
url += "&levelName="
}
else {
url += "&levelName=" + vm.q.levelName;
}
location.href = url;
},
java 后台:
/**
* 导出列表
*/
@RequestMapping("/export")
public Result export(HttpServletRequest request, HttpServletResponse response) throws Exception {
//根据查询条件获取导出结果集
Map<String, Object> params=new HashMap<>();
params.put("produceName", request.getParameter("produceName"));
params.put("yardName", request.getParameter("yardName"));
params.put("goodsName", request.getParameter("goodsName"));
params.put("levelName", request.getParameter("levelName"));
List<ProduceStockQueryEntity> dataList = querySummaryService.queryProduceStockList(params);
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
HSSFSheet sheet=wb.createSheet("异常数据");
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
//HSSFRow row1=sheet.createRow(0);
//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//HSSFCell cell=row1.createCell(0);
//设置单元格内容
//cell.setCellValue("学员考试成绩一览表");
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
//sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
//在sheet里创建标题行
HSSFRow row1=sheet.createRow(0);
//创建单元格并设置单元格内容
row1.createCell(0).setCellValue("产地库");
row1.createCell(1).setCellValue("仓位");
row1.createCell(2).setCellValue("货名");
row1.createCell(3).setCellValue("等级");
row1.createCell(4).setCellValue("剩余库存量(吨)");
row1.createCell(5).setCellValue("在途量(吨)");
row1.createCell(6).setCellValue("到达量(吨)");
HSSFRow row2=sheet.createRow(1);
row2.createCell(0).setCellValue("合计");
List<ProduceStockQueryEntity> totalList = querySummaryService.total(params);
row2.createCell(4).setCellValue(totalList.get(0).getRest_stock());
row2.createCell(5).setCellValue(totalList.get(0).getOnline_stock());
row2.createCell(6).setCellValue(totalList.get(0).getArrive_stock());
//在sheet里循环数据展示
for(int i=0;i<dataList.size();i++) {
HSSFRow row = sheet.createRow(i+2);
row.createCell(0).setCellValue(dataList.get(i).getProduce_name());
row.createCell(1).setCellValue(dataList.get(i).getYard_location_name());
row.createCell(2).setCellValue(dataList.get(i).getGoods_name());
row.createCell(3).setCellValue(dataList.get(i).getLevel_name());
row.createCell(4).setCellValue(dataList.get(i).getRest_stock());
row.createCell(5).setCellValue(dataList.get(i).getOnline_stock());
row.createCell(6).setCellValue(dataList.get(i).getArrive_stock());
}
//输出Excel文件
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-disposition", "attachment;filename=\""+new String("产地库存汇总".getBytes("gb2312"), "ISO8859-1")+".xls" + "\"" );
OutputStream ouputStream = response.getOutputStream();
wb.write(ouputStream);
ouputStream.flush();
ouputStream.close();
return Result.ok();
}