java简单快速导出EXCEL

**JAVA简单快速导出EXCEL

直接上代码

一、先导入maven包

	  <!--junit4测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.0.0</version>
    </dependency>

    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>4.5.2</version>
    </dependency>


//员工导出方法
@ResponseBody
@RequestMapping(value = "employee1/export", method = RequestMethod.GET)
public void export(HttpServletResponse response ,HttpServletResponse request) throws Exception {

    //查询后台数据库
    List<Employee> empList = employeeService.findAll();

    ArrayList<Employee> rows2 = CollUtil.newArrayList(empList);

    // 通过工具类创建writer,默认创建xls格式
    ExcelWriter writer = ExcelUtil.getWriter();
    //自定义标题别名
    writer.addHeaderAlias("username", "姓名");
    writer.addHeaderAlias("password", "密码");
    writer.addHeaderAlias("telphone", "电话");
    writer.addHeaderAlias("address", "地址");
    writer.addHeaderAlias("ordersNum", "订单编号");
    writer.addHeaderAlias("deptId", "部门id");
    writer.addHeaderAlias("deptName", "考试时间");
    writer.addHeaderAlias("entrytime", "入职时间");
    writer.addHeaderAlias("headImage", "头像");
    writer.addHeaderAlias("sex", "性别");
    writer.addHeaderAlias("salary", "工资");
    writer.addHeaderAlias("state", "状态");

    // 定义单元格背景色
    StyleSet style = writer.getStyleSet();
    // 第二个参数表示是否也设置头部单元格背景
    style.setBackgroundColor(IndexedColors.GREEN, false);


    //设置内容字体
    Font font = writer.createFont();
    font.setBold(true);
    font.setColor(Font.COLOR_RED);
    font.setItalic(true);

    //第二个参数表示是否忽略头部样式
    writer.getStyleSet().setFont(font, true);
    //out为OutputStream,需要写出到的目标流
    writer.setSheet("员工信息sheet表");
    writer.merge(12, "员工信息表");
    // 一次性写出内容,使用默认样式,强制输出标题
    writer.write(rows2, true);

    //解决中文乱码问题
    String fileName = "员工信息导出标题";
    fileName = fileName.replace(" ", "");
    String userAgent = request.getHeader("user-agent").toLowerCase();
    if (StringUtils.isBlank(fileName)) {
        fileName = ShopHelper.getCurrentTimestamp().toString();
    }
    fileName = fileName + ".xls";
    if (userAgent.contains("msie") || userAgent.contains("like gecko")) {
        //win
        fileName = URLEncoder.encode(fileName, "UTF-8");
    } else {
        fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
    }

    //response为HttpServletResponse对象
    response.setContentType("application/vnd.ms-excel;charset=utf-8");
    //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
    response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
    ServletOutputStream out = response.getOutputStream();

    writer.flush(out);
    // 关闭writer,释放内存
    writer.close();
    //此处记得关闭输出Servlet流
    IoUtil.close(out);

}

猜你喜欢

转载自blog.csdn.net/weixin_42075468/article/details/88952573