Java实现下载excel

  • 依赖
    • 使用的是poi
  • 实现目的
    • 请求
    • HSSFWorkbook方法
    • setResponseHeader方法
    • fypclXls方法实现整个下载过程

依赖

使用的是poi

开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel

Apache POI 简介是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。

官方主页: http://poi.apache.org/index.html
API文档: http://poi.apache.org/apidocs/index.html

<!--Excel解析--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version></dependency></dependencies>

实现目的

最近公司的项目需要实现页面下载excel文件的功能

请求

在controller层创建一个请求方法

@RequestMapping(value = "/fypclXls",method = RequestMethod.GET)public void fypclXls(@RequestParam Map<String,Object> params,HttpServletRequest request,HttpServletResponse response){//Query query = new Query(params);costDeviationService.fypclXls(params,request,response);}

HSSFWorkbook方法

在业务层去创建一个方法

 public HSSFWorkbook getHSSFWorkbook(String sheetName,String[] title,String[][] values,HSSFWorkbook workbook){//sheetName 表名称//title 表格第一行的表头名称//values 存放的内容//workbook 实现api的对象if (workbook == null){workbook = new HSSFWorkbook();}HSSFSheet sheet = workbook.createSheet(sheetName);HSSFRow row = sheet.createRow(0);HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);HSSFCell cell = null;for (int i = 0; i < title.length; i++) {cell = row.createCell(i);cell.setCellValue(title[i]);cell.setCellStyle(cellStyle);}for (int i = 0; i < values.length; i++) {row = sheet.createRow(i+1);for (int j = 0; j < values[i].length; j++) {row.createCell(j).setCellValue(values[i][j]);}}return workbook;}

setResponseHeader方法

实现页面下载文件的方法

public void setResponseHeader(HttpServletRequest request,HttpServletResponse response, String fileName)  {//fileName 文件名称try {String agent = request.getHeader("USER-AGENT").toLowerCase();if(StringUtils.contains(agent, "Mozilla")){fileName = new String(fileName.getBytes(), "ISO8859-1");}else {fileName = URLEncoder.encode(fileName, "utf8");}response.setCharacterEncoding("UTF-8");response.setContentType("application/vnd.ms-excel;charset=utf-8");// 设置contentType为excel格式response.setHeader("Content-Disposition", "Attachment;Filename="+ fileName);} catch (Exception e) {e.printStackTrace();}}

fypclXls方法实现整个下载过程

 @Overridepublic void fypclXls(Map<String, Object> params,HttpServletRequest request,HttpServletResponse response) {//业务查询出的数据List<CostDeviationDo> list = this.list(params);//标题String[] title = {"病案号","患者姓名","诊断编码","诊断名称","手术编码","手术名称","实际住院费用","均次费用","CV","分值","分值单价","费用偏离率"};//xls表名String fileName = "费用偏离率.xls";String sheetName = "费用偏离率";String[][] content = new String[list.size()][title.length];for (int i = 0; i < list.size(); i++) {//把数据遍历添加到数组中CostDeviationDo costDeviationDo = list.get(i);content[i][0] = costDeviationDo.getBah();content[i][1] = costDeviationDo.getXm();content[i][2] = costDeviationDo.getZdbm();content[i][3] = costDeviationDo.getZdmc();content[i][4] = costDeviationDo.getSsbm();content[i][5] = costDeviationDo.getSsmc();content[i][6] = String.valueOf(costDeviationDo.getZfy());content[i][7] = String.valueOf(costDeviationDo.getCjfy());content[i][8] = String.valueOf(costDeviationDo.getCv());content[i][9] = String.valueOf(costDeviationDo.getFz());content[i][10] = String.valueOf(costDeviationDo.getFzdj());content[i][11] = String.valueOf(costDeviationDo.getFypcl());}try {//使用方法得到api对象HSSFWorkbook hssfWorkbook = getHSSFWorkbook(sheetName, title, content, null);//实现页面下载setResponseHeader(request,response,fileName);//创建页面输出流对象ServletOutputStream outputStream = response.getOutputStream();//把文件写入输出流的对象中hssfWorkbook.write(outputStream);//outputStream.flush();outputStream.close();} catch (IOException e) {e.printStackTrace();}}

Java后台实现Excel文件下载相关推荐

  1. java后台实现excel文件下载功能

    java后台实现excel文件下载功能  java中对于excel文件的操作,有读取,写入,上传等功能,在对excel文件进行操作时,为了让使用者更加直观的制作excel数据,必然会有下载模板exce ...

  2. Java后台Controller实现文件下载操作

    代码 参数: 1.filePath:文件的绝对路径(d:\download\a.xlsx) 2.fileName(a.xlsx) 3.编码格式(GBK) 4.response.request不介绍了, ...

  3. 关于使用Java后台导入excel文件,读取数据后,更新数据库,并返回数据给到前端的相关问题总结

    在之前的项目中,使用到了Java后台读取excel文件数据的功能点,本想着该功能点已经做过了,这一类的应该都大差不离,不过在刚结束的一个项目中,现实给我深深的上了一课,特此编写此片博客,以作记录,并给 ...

  4. Java后台生成Excel表格

    Java后台生成Excel表格 功能简述 需求 目标 实现 1.首先在项目中导入jxl相关jar包,并引入 2.编写代码 3.结果 后记 功能简述 由于公司业务需求,我需要实现一个完全通过Java后台 ...

  5. java后台导出excel代码详细讲解,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  6. 微信小程序——利用java后台解析Excel文件的数据

    后台为java,ssm框架 1.在SpringMvc.xml文件中增加Spring文件上传的解析器 <bean id="multipartResolver"class=&qu ...

  7. java后台导出Excel表格

    引言 java后台导出表格一般分两种:注解配置(@Excel)导出和自定义导出 注解配置(@Excel)导出 添加poi依赖 <dependency><groupId>cn.a ...

  8. Java后台下载Excel模板并输出到浏览器上的样例

    上代码! /*** 下载模板** @throws IOException*/@RequestMapping("/exportExcel")@ResponseBodypublic O ...

  9. java后台获取Excel后缀名以及sheet页名称

    String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(&quo ...

  10. java后台生成的Excel文件并通过浏览器下载

    java后台生成Excel文件需要引入poi, 以下是poi的pom可以引入自己的项目里面去 <dependency><groupId>org.apache.poi</g ...

最新文章

  1. workstation 14 PRO 秘钥
  2. Android之如何卸载指定的 应用程序
  3. OVS vswitchd启动(三十六)
  4. 组播穿越MPLS ×××+SSM
  5. (41)缺页异常简介
  6. 2.1 线性表的定义和基本操作
  7. 刷题≠学好数学,近百位名校名师告诉你,数学是怎么学好的?
  8. JAVA入门级教学之(类之间究竟有哪几种关系呢)
  9. js几个页面生成pdf 然后批量打印_太好用了!这款免费PDF工具能够满足你的各种需求...
  10. java 获取mac地址_java入门知识点和环境准备
  11. 基于Krpano的全景导游系统设计与实现(含word文档)
  12. 微软拼音中设置小鹤双拼
  13. 关于抢红包的_关于抢红包的作文600
  14. 商汤的AI伴游小精灵(找最多子树)
  15. EDM系统看板多邮件模板邮箱配置地址簿​EDM营销推送邮件系统开发
  16. Echarts 柱状图渐变色设置
  17. 导出https网站证书
  18. 使用 Java 解决现代应用程序开发挑战
  19. 数字电路课设_电子抢答器
  20. [css] 你是怎么选择resetting和normalizing的?为什么?

热门文章

  1. SAE J1939协议(一)
  2. Python多线程好玩弹窗代码
  3. 800道Python习题,花了一个月终于整理出来了,挑战一下自己能做对多少题
  4. KETTLE-JDBC连接池参数介绍以及使用
  5. 虚拟机服务器做ghost,图文教程:利用VMware虚拟机一步一步学着做GHOSTX——转自无约而来...
  6. 微信小程序如何引入图标
  7. window64位版本的secoclient工具下载(secoclient-win-64-7.0.2.26.exe)
  8. 智能优化算法:萤火虫算法-附代码
  9. ThinkPHP5校园图书馆管理系统
  10. android锁屏自动清理,安卓手机如何把锁屏自动清理关掉急