业务代码:

@RequestMapping(value = "/exportDepartStatistics.html")@ResponseBodypublic HashMap<String, Object> exportDepartStatistics(HttpServletRequest request, HttpServletResponse response)  {System.out.println("exportDepartStatistics");String declareYear = request.getParameter("declareYear");HashMap<String, Object> modelmap = new HashMap<>();String status = "success"; //ajax状态//excel标题String[] title = {"序号","部门","已审核","未审核","已总结","合计"};//excel文件名String fileName = "DepartStatistics"+ DateTools.dateToString(new Date(),"yyy-MM-dd-HHmmss") + ".xls";//sheet名String sheetName = "";if (declareYear == null || "".equals(declareYear)){sheetName =  "各部门情况统计";}else{sheetName =  declareYear + "年各部门情况统计";}//响应到客户端try {//获取存储路径ConfigItem configItem = configItemService.queryConfigItem(ConfigItem.TYPE_STATISTICS_PATH);if(configItem == null || configItem.getCurrentValue() == null){modelmap.put("status","lose");return modelmap;}Map<String,String> map = new HashMap<String,String>();map.put("type", Case.TYPE_DEPART);map.put("declareYear",declareYear);map.put("handlingDepartment", null);//获取数据List<Map<String, Object>> countList = caService.getCountList(map);String [][] content = new String[countList.size()][];for (int i = 0; i < countList.size(); i++) {content[i] = new String[title.length];Map<String, Object> declareMap = countList.get(i);String handlingDepartment = "";String notCheck = "";String checked = "";String declared = "";String caseCount = "";if(declareMap.get("HANDLINGDEPARTMENTNAME") != null )handlingDepartment = declareMap.get("HANDLINGDEPARTMENTNAME").toString();if(declareMap.get("notCheck") != null)notCheck = declareMap.get("notCheck").toString();if(declareMap.get("checked") != null)checked = declareMap.get("checked").toString();if(declareMap.get("declared") != null)declared = declareMap.get("declared").toString();if(declareMap.get("caseCount") != null)caseCount = declareMap.get("caseCount").toString();if(i != (countList.size()-1)) {content[i][0] = (i + 1) + "";}content[i][1] = handlingDepartment;content[i][2] = notCheck;content[i][3] = checked;content[i][4] = declared;content[i][5] = caseCount;}//创建HSSFWorkbookHSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);//配置路径下 增加年月文件夹String filePath = configItem.getCurrentValue()+ "\\" + DateTools.dateToString(new Date(),"yyyyMM");//文件夹不存在进行创建FileUpAndDown.checkDirExists(filePath);//上传至服务器File file = new File(filePath + "\\" + fileName);FileOutputStream outFile = new FileOutputStream(file);wb.write(outFile);outFile.flush();outFile.close();} catch (Exception e) {status = "fail";e.printStackTrace();}modelmap.put("status",status);modelmap.put("fileName",fileName);modelmap.put("fileKey",ConfigItem.TYPE_STATISTICS_PATH);return modelmap;}

Excel工具类:

import org.apache.poi.hssf.usermodel.*;public class ExcelUtil {/*** 导出Excel* @param sheetName sheet名称* @param title 标题* @param values 内容* @param wb HSSFWorkbook对象* @return*/public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){// 第一步,创建一个HSSFWorkbook,对应一个Excel文件if(wb == null){wb = new HSSFWorkbook();}// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheetHSSFSheet sheet = wb.createSheet(sheetName);// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制HSSFRow row = sheet.createRow(0);// 第四步,创建单元格,并设置值表头 设置表头居中HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式// 设置字体HSSFFont font = wb.createFont();font.setFontName("宋体");font.setFontHeightInPoints((short) 13);// 字体大小// 设置单元格格式HSSFDataFormat format = wb.createDataFormat();style.setDataFormat(format.getFormat("@"));style.setFont(font);style.setWrapText(true);// 自动换行//声明列对象HSSFCell cell = null;//创建标题for(int i=0;i<title.length;i++){cell = row.createCell(i);cell.setCellValue(title[i]);cell.setCellStyle(style);}//创建内容for(int i=0;i<values.length;i++){row = sheet.createRow(i + 1);for(int j=0;j<values[i].length;j++){//将内容按顺序赋给对应的列对象HSSFCell cellBody = row.createCell(j);cellBody.setCellValue(values[i][j]);cellBody.setCellStyle(style);}}//自动调整列宽for(int i=0;i<title.length;i++){sheet.autoSizeColumn((short)i); //调整第一列宽度}return wb;}
}

js代码:

 function exportExcel(){var declareYear = $("#declareYear").val();$.ajax({url:"exportDepartStatistics.html", //exportDeclareStatistics exportInputStatistics  exportDepartStatisticsdataType: "json",data: {declareYear:declareYear},success:function(result){if (result.status == "success"){window.location.href = "downLoadFile.html?fileKey="+ result.fileKey+"&&fileName="+result.fileName;}else if (result.status == "fail"){alert("下载失败");}}});}

报表下载:

//下载报表  @param【fileKey:配置类型(获取路径) fileName:文件名】@RequestMapping(value = "/downLoadFile.html")@ResponseBodypublic void downLoadFile(HttpServletRequest request, HttpServletResponse response) throws Exception {//获取配置路径String fileKey = request.getParameter("fileKey");ConfigItem configItem = configItemService.queryConfigItem(fileKey);String filePath = configItem.getCurrentValue()+ "\\" + DateTools.dateToString(new Date(),"yyyyMM");String fileName = request.getParameter("fileName");fileName =  new String(fileName.getBytes("ISO-8859-1"),"UTF-8");File file = new File(filePath + "\\" + fileName);try {response.setContentType("application/-excel");fileName = java.net.URLEncoder.encode(fileName,"UTF-8");response.setHeader("Content-disposition","attachment;filename="+fileName);OutputStream out = response.getOutputStream();byte d[] = new byte[256];int count = 0;FileInputStream in = new FileInputStream(file);while((count = in.read(d)) != -1){out.write(d,0,count);}out.flush();out.close();in.close();} catch (IOException e) {e.printStackTrace();}}

java统计数据并导出Excel相关推荐

  1. java统计报表,导出excel,自定义存储目录

    java统计报表,导出excle,自定义存储目录 做一个将查询出来的数据写入excel,并且点击导出按钮是,可以选择导出路径 **直接上完整代码 1.utils工具类,里面可以自己设置样式,详细看注释 ...

  2. JAVA语言(POI数据导入导出Excel)

    POI数据导入导出Excel(样式可以自己设置) //----------------------------Controller层 --------------------------------- ...

  3. 数据的导出Excel表

    数据的导出Excel表 1.原理 ​ 点击前端页面的按钮函数,函数里面去调用后端对应对的请求地址,这个请求地址所对应的方法再去调用业务层,业务层再去持久层拿到数据,返回给控制层,控制层将数据封装为比特 ...

  4. java大数据量导出csv文件并压缩

    java大数据量导出csv文件并压缩 java使用POI大数据量导出excel一般会存在以下几个问题: 一次从数据库查询出这么大数据,查询缓慢 查询数据量过大时会内存溢出 解决方案:分页查询数据,比如 ...

  5. 基于Web的问卷调查统计结果写入\导出Excel小实例

    概述 最近有位同学联系到我,问我说如何实现一个基于Web的问卷调查统计结果写入/导出Excel,然后我的Team成员二话不说帮他写了一个简单的小实例让他去参考,每行都帮他注释好,真的是负责到底,还可以 ...

  6. 大数据导出excel大小限制_大数据量导出Excel的方案

    测试共同条件: 数据总数为110011条,每条数据条数为19个字段. 电脑配置为:P4 2.67GHz,1G内存. 一.POI.JXL.FastExcel比较 POI.JXL.FastExcel均为j ...

  7. java中使用jxl导出excel表格的工具类(全网唯一亲测可用,在原来基础上扩展)

    java中后台导出excel的话,有两种方案,一是使用poi(不过由于是windows版本的,存在不兼容,但功能更多,更强大),而是使用jxl(纯java编写,不过兼容,简单一些),可以设置输出的ex ...

  8. asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL

    代码: 1 /// <summary> 2 /// HTML Table表格数据(html)导出EXCEL 3 /// </summary> 4 /// <param n ...

  9. java excel单元格背景色,『excel表格尺寸设置』Java如何设置被导出excel单元格的样式?比如背景色,大小什么的?...

    Java如何设置被导出excel单元格的样式?比如背景色,大小什么的? 使 poi ,具体实现 HSSFCellStyle style = null; // 创建表头style HSSFCellSty ...

最新文章

  1. oracle 使用nfs挂载的目录不能进行归档
  2. Nodejs教程14:querystring模块
  3. 前端学习笔记2017.6.12 CSS控制DIV
  4. ML之FE:基于BigMartSales数据集利用Featuretools工具(1个dataframe表结构切为2个Entity表结构)实现自动特征工程之详细攻略
  5. 英语 常用表达方法搜集
  6. cd rw 多少次_程序员:想知道你每天按了多少次键盘吗?
  7. MATLAB函数gensurf,matlab模糊逻辑(二)
  8. Integer的==问题
  9. 从入侵到变现——“黑洞”下的黑帽SEO分析
  10. 谈谈Angular关于$watch,$apply 以及 $digest的工作原理
  11. 误操作删除数据文件恢复案例讨论
  12. python3多线程自定义threading子类
  13. 什么是RAID(独立磁盘冗余阵列)?
  14. 手把手教你如何导入源码,zookeeper为例
  15. [悟] 因上努力,果上随缘(转)
  16. 海康摄像头配置固定IP
  17. 使用Microsoft Network Monitor分析Wireshark无法解析的SSL流量包
  18. 台式计算机识别不了u盘启动,台式机进入不到U盘启动怎么办
  19. 学习大数据,为大家推荐几本好书
  20. 【原创】获得大尺寸Google地图图片

热门文章

  1. java swing还有人用吗_Java不是自动管理内存吗,怎么还有内存泄漏?
  2. centos8 安装geany
  3. EPIC《禅意花园》项目开放下载
  4. Java程序员学习笔记——Mybatis日常记录
  5. 记前端知识--数组元素的相关操作
  6. 再流弊的技术,也抵不过一次事故:兼谈技术管理
  7. JSON和JSONP的差别,以及用法
  8. Oracle查看并修改最大连接数
  9. 山寨一个PetShop(Task002)——数据类库Model
  10. 类似mysqlhotcopy备份mysql myisam脚本