java用POI生成Excel并从浏览器直接下载

话不多说,上代码,注释写的很清楚:

@RequestMapping(value = "/exportExcel")
    public void exporExcel(HttpServletRequest request,HttpServletResponse response) {
    String userID = request.getParameter("userID");
        try {
            List<Cllog> cllogList = cllogService.getCusTNListBySchWorkId(userID);
            
            // 创建excel
            HSSFWorkbook wk = new HSSFWorkbook();
            // 创建一张工作表
            HSSFSheet sheet = wk.createSheet();
            // 设置单元格宽度
            sheet.setColumnWidth(0, 2000);
            sheet.setColumnWidth(1, 6000);
            // 创建第一行
            HSSFRow row = sheet.createRow(0);
            // 创建第一行的列并向单元格写值
            HSSFCell cell = row.createCell(0);
            cell.setCellValue("序列号");
            cell = row.createCell(1);
            cell.setCellValue("手机型号");
            
            // 写入数据
            for (short i=0;i<cllogList.size();i++)
            {
                row = sheet.createRow(i+1);
                row.createCell(0).setCellValue(String.valueOf(i+1));
                row.createCell(1).setCellValue(cllogList.get(i).getClCustn());
            }
            // 文件名
            String fileName = "手机型号" + userID + ".xlsx";
            // 解决文件乱码
            final String userAgent = request.getHeader("user-agent");
            if (userAgent != null && userAgent.indexOf("Firefox") >= 0
                    || userAgent.indexOf("Chrome") >= 0 || userAgent.indexOf("Safari") >= 0) {
                fileName = new String(fileName.getBytes(), "ISO8859-1");
            } else {
                fileName = URLEncoder.encode(fileName, "UTF8"); 
            }
            // 下载文件
            response.setContentType("application/octet-stream");
            response.setHeader("Content-disposition", "attachment;filename="+fileName);
            response.flushBuffer();
            wk.write(response.getOutputStream());
            wk.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

猜你喜欢

转载自www.cnblogs.com/steveshao/p/11851006.html