栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java后台实现Excel文件下载

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java后台实现Excel文件下载

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

        
            org.apache.poi
            poi
            3.9
        
        
            org.apache.poi
            poi-ooxml
            3.9
        
        

实现目的

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

请求

在controller层创建一个请求方法

@RequestMapping(value = "/fypclXls",method = RequestMethod.GET)
	public void fypclXls(@RequestParam Map 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方法实现整个下载过程
 @Override
    public void fypclXls(Map params,HttpServletRequest request,HttpServletResponse response) {
    //业务查询出的数据
        List 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();
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458571.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号