• 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;
        }
  • 相关阅读:
    善用性能工具进行SQL整体优化
    mysql use index () 优化查询的例子
    mysql优化 explain index
    mysql中explain用法和结果的含义
    MySQL运行状态show status中文详解
    Mysql运行状态查询命令及调优详解
    数据库工具——Navicat Premium使用技巧
    细说mysql索引
    对国家失望:汉末儒生集体沉默(儒家主张积极入世,以经国济世为己任的)
    韦尔股份:打造国际半导体设计行业领先企业(各种企业问题的问答)
  • 原文地址:https://www.cnblogs.com/xwer/p/7251152.html
Copyright © 2020-2023  润新知