java中使用POI+excel 实现数据的批量导入和导出

java web中使用POI实现excel文件的导入和导出

文件导出

 1     //导入excle表
 2     public String exportXls() throws IOException{
 3         //1.查询所有需要的数据
 4         List<Subarea> list = subareaService.findAll();
 5         //2.使用POI将数据写进excel表中
 6         //2.1在内存中创建一个excel文件
 7         HSSFWorkbook workbook = new HSSFWorkbook();
 8         //2.2创建一个标签页
 9         HSSFSheet sheet = workbook.createSheet("分区数据");
10         //2.3创建标题行
11         HSSFRow headRow = sheet.createRow(0);
12         headRow.createCell(0).setCellValue("分区编号");
13         headRow.createCell(1).setCellValue("开始编号");
14         headRow.createCell(2).setCellValue("结束编号");
15         headRow.createCell(3).setCellValue("位置信息");
16         headRow.createCell(4).setCellValue("省市区");
17         //2.4将需要的数据放入excel表中
18         for (Subarea subarea : list) {
19             HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1);
20             headRow.createCell(0).setCellValue(subarea.getId());
21             headRow.createCell(1).setCellValue(subarea.getStartnum());
22             headRow.createCell(2).setCellValue(subarea.getEndnum());
23             headRow.createCell(3).setCellValue(subarea.getPosition());
24             headRow.createCell(4).setCellValue(subarea.getRegion().getName());
25         }
26         
27         //3.输出流进行文件下载
28         String filename = "分区信息表.xls";
29         String mimeType = ServletActionContext.getServletContext().getMimeType(filename);
30         ServletOutputStream outs = ServletActionContext.getResponse().getOutputStream();
31         
32         
33         //获取客户端的浏览器类型
34         String agent = ServletActionContext.getRequest().getHeader("User-Agent");
35         filename =  FileUtils.encodeDownloadFilename(filename, agent);
36         ServletActionContext.getResponse().setHeader("content-disposition", 
37                 "attachment;filename"+filename);
38         
39         workbook.write(outs);
40         return NONE;
41     }

针对不同浏览器下载使用的工具类

    /**
     * 下载文件时,针对不同浏览器,进行附件名的编码
     * 
     * @param filename
     *        下载文件名
     * @param agent
     *        客户端浏览器
     * @return 编码后的下载附件名
     * @throws IOException
     */
    public static String encodeDownloadFilename(String filename, String agent) throws IOException {
        if (agent.contains("Firefox")) { // 火狐浏览器
            filename = "=?UTF-8?B?" + new BASE64Encoder().encode(filename.getBytes("utf-8")) + "?=";
            filename = filename.replaceAll("\r\n", "");
        } else { // IE及其他浏览器
            filename = URLEncoder.encode(filename, "utf-8");
            filename = filename.replace("+", " ");
        }
        return filename;
    }
原文地址:https://www.cnblogs.com/xwer/p/7251152.html