• 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;
        }
  • 相关阅读:
    Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决)
    关于dubbo的provider和consumer都配置timeout超时时间的情况
    cas单点登录-CAS5.1.3 overlay服务器搭建(二)
    cas单点登录-https的配置(一)
    mysql5.6性能优化
    jvm面试题
    关于Class.getResource和ClassLoader.getResource的路径问题
    构建流式计算卖家日志系统应用实践
    在分布式系统里看CAP定理
    bootstrap插件(对话框)bootbox参数和自定义弹出框宽度设置
  • 原文地址:https://www.cnblogs.com/xwer/p/7251152.html
Copyright © 2020-2023  润新知