当前位置:   article > 正文

Java Controller 使用 EasyExcel 导出数据库数据为excel格式

Java Controller 使用 EasyExcel 导出数据库数据为excel格式

一、前期准备

①所需jar包

②ssm框架以及tomcat环境

二、实例 

1、pojo层

@ExcelProperty(value = "日志编号", index = 0)

标题,以及标题位置第几个

 @ColumnWidth(20)

行宽

  1. package com.ruanyuan.zy.utils;
  2. import com.alibaba.excel.annotation.ExcelProperty;
  3. import com.alibaba.excel.annotation.format.DateTimeFormat;
  4. import com.alibaba.excel.annotation.write.style.ColumnWidth;
  5. import com.baomidou.mybatisplus.annotation.TableField;
  6. import com.baomidou.mybatisplus.annotation.TableName;
  7. /**
  8. * 导出工具类
  9. *
  10. * @author 赵皮球
  11. *
  12. * 2023年5月10日
  13. */
  14. @TableName("excel_demo_data")
  15. public class Export {
  16. @ExcelProperty(value = "日志编号", index = 0)
  17. @ColumnWidth(20)
  18. private Integer id;
  19. @ExcelProperty(value = "日志类型,1登录,2操作", index = 1)
  20. @ColumnWidth(20)
  21. private String type;
  22. @ExcelProperty(value = "日志内容", index = 2)
  23. @ColumnWidth(20)
  24. private String content;
  25. @ExcelProperty(value = "操作用户", index = 3)
  26. @ColumnWidth(20)
  27. @TableField("empno")
  28. private String empno;
  29. @ExcelProperty(value = "操作时间", index = 4)
  30. @ColumnWidth(20)
  31. private String time;
  32. /**
  33. * 无参构造
  34. *
  35. */
  36. public Export() {
  37. super();
  38. // TODO Auto-generated constructor stub
  39. }
  40. /**
  41. * 有参构造
  42. *
  43. * @param id 日志编号
  44. * @param type 日志类型,1登录,2操作
  45. * @param content 操作内容
  46. * @param empno 操作用户,外键用户表
  47. * @param time 操作时间
  48. */
  49. public Export(Integer id, String type, String content, String empno, String time) {
  50. super();
  51. this.id = id;
  52. this.type = type;
  53. this.content = content;
  54. this.empno = empno;
  55. this.time = time;
  56. }
  57. /**
  58. * 各个属性的getter/setter
  59. *
  60. * @return
  61. */
  62. public Integer getId() {
  63. return id;
  64. }
  65. public void setId(Integer id) {
  66. this.id = id;
  67. }
  68. public String getType() {
  69. return type;
  70. }
  71. public void setType(String type) {
  72. this.type = type;
  73. }
  74. public String getContent() {
  75. return content;
  76. }
  77. public void setContent(String content) {
  78. this.content = content;
  79. }
  80. public String getEmpno() {
  81. return empno;
  82. }
  83. public void setEmpno(String empno) {
  84. this.empno = empno;
  85. }
  86. public String getTime() {
  87. return time;
  88. }
  89. public void setTime(String time) {
  90. this.time = time;
  91. }
  92. /**
  93. * 重写toString
  94. *
  95. */
  96. @Override
  97. public String toString() {
  98. return "Logs [id=" + id + ", type=" + type + ", content=" + content + ", empno=" + empno + ", time=" + time
  99. + "]";
  100. }
  101. }

 2、mapper层

①mapper.java,我这里是logsMapper.java,根据需要更改

  1. package com.ruanyuan.zy.mapper;
  2. import java.util.List;
  3. import com.ruanyuan.zy.pojo.Logs;
  4. /**
  5. * 系统日志 Mapper 接口层
  6. *
  7. * @author 赵皮球
  8. *
  9. * 2023年5月1日
  10. */
  11. public interface LogsMapper {
  12. /**
  13. * 查询所有的日志
  14. *
  15. * @return
  16. */
  17. public List<Logs> getAllLogs();
  18. }

②mapper.xml,我这里是logsMapper.xml,根据需要更改

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.ruanyuan.zy.mapper.LogsMapper">
  4. <!-- 查询所有日志数据 -->
  5. <select id="getAllLogs" parameterType="Logs" resultType="Logs">
  6. SELECT *
  7. FROM `logs` ORDER BY `time` DESC
  8. </select>
  9. </mapper>

3、service层

①service.java

  1. package com.ruanyuan.zy.service;
  2. import java.util.List;
  3. import com.ruanyuan.zy.pojo.Logs;
  4. /**
  5. * 系统日志 服务类
  6. *
  7. * @author 赵皮球
  8. *
  9. * 2023年5月1日
  10. */
  11. public interface LogsService {
  12. /**
  13. * 查询所有的日志
  14. *
  15. * @return
  16. */
  17. public List<Logs> getAllLogs();
  18. }

②serviceImpl.java

  1. package com.ruanyuan.zy.service.impl;
  2. import com.ruanyuan.zy.mapper.LogsMapper;
  3. import com.ruanyuan.zy.pojo.Logs;
  4. import com.ruanyuan.zy.service.LogsService;
  5. import java.util.List;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. /**
  9. * 系统日志 服务实现类
  10. *
  11. * @author 赵皮球
  12. *
  13. * 2023年5月1日
  14. */
  15. @Service
  16. public class LogsServiceImpl implements LogsService {
  17. @Autowired
  18. private LogsMapper logsMapper;
  19. /**
  20. * 重写查询所有的日志
  21. *
  22. * @return
  23. */
  24. @Override
  25. public List<Logs> getAllLogs() {
  26. // TODO Auto-generated method stub
  27. return logsMapper.getAllLogs();
  28. }
  29. }

 4、controller层(关键代码,最后一步)

     List<Logs> logsList = logsMapper.getAllLogs();

        后续步骤有

  1. /**
  2. * 日志导出
  3. *
  4. * @return
  5. */
  6. @RequestMapping("/exportExcel")
  7. public String exportExcel(HttpServletResponse response, Model model) {
  8. response.setContentType("application/vnd.ms-excel");
  9. response.setCharacterEncoding("utf-8");
  10. // 获取所有的日志信息
  11. List<Logs> logsList = logsMapper.getAllLogs();
  12. // 文件名
  13. String fileName;
  14. fileName = "登录日志";
  15. try {
  16. // 文件名,编码格式
  17. fileName = URLEncoder.encode(fileName, "UTF-8");
  18. // 文件格式
  19. response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
  20. // 使用EasyExcel工具写excel
  21. EasyExcel.write(response.getOutputStream(), Export.class).sheet("logs").doWrite(logsList);
  22. } catch (IOException e) {
  23. e.printStackTrace();
  24. }
  25. // 跳转列表页面,这里有配置文件统一写了后缀名,无需写后缀名.jsp
  26. return "logsList";
  27. }

5、logsList.jsp页面

关键代码超链接,调用controller中的导出接口方法

<a  href="${pageContext.request.contextPath}/exportExcel">全部导出excel </a> 

(页面样式以及数据仅供参考) 

  1. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  3. <%@ page language="java" contentType="text/html; charset=UTF-8"
  4. pageEncoding="UTF-8"%>
  5. <!DOCTYPE HTML>
  6. <html>
  7. <head>
  8. <meta charset="utf-8">
  9. <meta name="renderer" content="webkit|ie-comp|ie-stand">
  10. <title>日志管理</title>
  11. </head>
  12. <body>
  13. <nav class="breadcrumb">
  14. <i class="Hui-iconfont">&#xe67f;</i>
  15. 首页
  16. <span class="c-gray en">&gt;</span>
  17. 系统管理
  18. <span class="c-gray en">&gt;</span>
  19. 登录日志管理
  20. <a class="btn btn-success radius r"
  21. style="line-height: 1.6em;
  22. margin-top: 3px"
  23. href="javascript:location.replace(location.href);"
  24. title="刷新">
  25. <i class="Hui-iconfont">&#xe68f;</i>
  26. </a>
  27. </nav>
  28. <div class="page-container">
  29. <div class="page-container">
  30. <div class="cl pd-5 bg-1 bk-gray">
  31. <span class="l">
  32. <a href="javascript:;"
  33. id="delmore"
  34. class="btn btn-danger radius">
  35. <i class="Hui-iconfont">&#xe6e2;</i>
  36. 批量删除
  37. </a>
  38. <a class="btn btn-primary radius "
  39. href="${pageContext.request.contextPath}/exportExcel?type=${type}&empno=${employee.empno}"
  40. target="dataOperate">
  41. <i class="Hui-iconfont">&#xe640;</i>
  42. 全部导出excel
  43. </a>
  44. <a class="" target="dataOperate"></a>
  45. </span>
  46. <span class="r">
  47. 共有数据:<strong>${sum }</strong> 条
  48. </span>
  49. </div>
  50. <table class="table table-border table-bordered table-hover table-bg">
  51. <thead>
  52. <tr>
  53. <th scope="col" colspan="6">登录日志管理</th>
  54. </tr>
  55. <tr class="text-c">
  56. <th width="25"><input type="checkbox" value="" name=""></th>
  57. <th width="200">ID</th>
  58. <th width="200">登录员工</th>
  59. <th width="200">登录IP</th>
  60. <th width="200">操作日期</th>
  61. <th width="70">操作</th>
  62. </tr>
  63. </thead>
  64. <tbody>
  65. <c:forEach items="${logsList }" var="logsList">
  66. <tr class="text-c">
  67. <input type="hidden" value="${type }" id="type">
  68. <td><input type="checkbox" value="${logsList.id }" name="id"></td>
  69. <td>${logsList.id }</td>
  70. <td>${logsList.ename}</td>
  71. <td>${logsList.content }</td>
  72. <td>${logsList.time }</td>
  73. <td class="f-14">
  74. <a title="删除" href="javascript:;" class="ml-5 delone" style="text-decoration: none">
  75. <i class="Hui-iconfont">&#xe6e2;</i>
  76. </a>
  77. </td>
  78. </tr>
  79. </c:forEach>
  80. </tbody>
  81. </table>
  82. </div>
  83. </body>
  84. </html>

三、效果

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/pjghi/article/detail/61093
推荐阅读
相关标签
  

闽ICP备14008679号