1、实现效果

2、项目使用到的技术

1、springboot框架
2、Mysql数据库
3、Mybatis-plus
4、EasyExcel
5、lombok
6、servlet

3、数据库设计


user.sql

/*Navicat Premium Data TransferSource Server         : localhost_3306Source Server Type    : MySQLSource Server Version : 50729Source Host           : localhost:3306Source Schema         : easyexcelTarget Server Type    : MySQLTarget Server Version : 50729File Encoding         : 65001Date: 20/09/2020 15:19:08
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` int(25) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,`age` int(11) NULL DEFAULT NULL,`create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'Tom', 25, '2020-09-20 14:50:56');
INSERT INTO `user` VALUES (2, 'Lisa', 18, '2020-09-20 14:50:59');
INSERT INTO `user` VALUES (3, 'Mary', 19, '2020-09-20 14:51:02');
INSERT INTO `user` VALUES (4, 'Davi', 20, '2020-09-20 14:51:06');
INSERT INTO `user` VALUES (5, 'Sandi', 21, '2020-09-20 14:51:09');SET FOREIGN_KEY_CHECKS = 1;

4、项目结构

5、代码实现

5.1 pom.xml

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lm</groupId><artifactId>easyexcel</artifactId><version>0.0.1-SNAPSHOT</version><name>easyexcel</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.3.0.RELEASE</spring-boot.version></properties><dependencies><!--    Mysql    --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--    lombok    --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--    mybatis-plus    --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.1.0</version></dependency><!--    easyexcel    --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency><!--   servlet     --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.2.6.RELEASE</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.0.RELEASE</version><configuration><mainClass>com.lm.easyexcel.EasyexcelApplication</mainClass></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

5.2 application.propertity

application.propertity

mybatis配置不能落,否则会报找不到Mapper的错误

# 应用名称
spring.application.name=easyexcel
# 应用服务 WEB 访问端口
server.port=8080
# spring 静态资源扫描路径
spring.resources.static_locations=classpath:/static/
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/easyexcel?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=root#mybatis配置
mybatis.mapper-locations= classpath:mapper/*.xml
mybatis.type-aliases-package= com.lm.easyexcel.entity

启动类上加上下面的包扫描注解

@MapperScan("com.lm.easyexcel.mapper")

5.3 实体类

User.java

package com.lm.easyexcel.entity;import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.lm.easyexcel.util.LocalDateTimeConverter;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.time.LocalDateTime;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {/***  @ExcelIgnore 导出时忽略该项*/@ExcelIgnore private Integer id;/*** @ExcelProperty导出时输出项,value表头为姓名,index输出的顺序*/@ExcelProperty(value="姓名",index=0)private String name;@ExcelProperty(value="年龄",index=1)private Integer age;/*** @ColumnWidth(25) 列宽度* converter = LocalDateTimeConverter.class 为工具类,* 用于转换LocalDateTime时间*/@ColumnWidth(25)@ExcelProperty(value="创建时间",index=2,converter = LocalDateTimeConverter.class)private LocalDateTime createTime;}

5.4 LocalDateTimeConverter

该工具类用于解决LocalDateTime日期转换的问题

error:Can not find 'Converter' support class LocalDateTime

原文链接: https://blog.csdn.net/fsadkjl/article/details/105800590

LocalDateTimeConverter.java

package com.lm.easyexcel.util;import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class LocalDateTimeConverter implements Converter<LocalDateTime> {@Overridepublic Class<LocalDateTime> supportJavaTypeKey() {return LocalDateTime.class;}@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}@Overridepublic LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) {return LocalDateTime.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));}@Overridepublic CellData<String> convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) {return new CellData<>(value.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));}}

5.5 UserMapper

UserMapper.java

package com.lm.easyexcel.mapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lm.easyexcel.entity.User;
import org.apache.ibatis.annotations.Param;import java.util.List;
/**
* 继承Mybatis-plus的BaseMapper,使用QueryWrapper包装类进行对数据的查询
*/
public interface UserMapper extends BaseMapper {List<User> downloadExcel(@Param("user") QueryWrapper<User> queryWrapper);
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lm.easyexcel.mapper.UserMapper"><resultMap id="beans" type="com.lm.easyexcel.entity.User" /><select id="downloadExcel" resultMap="beans">select * from user</select></mapper>

5.6 Service

UserService.java

package com.lm.easyexcel.service;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public interface UserService {/***   这里使用到pom.xml的servlet-api依赖,负责向客户端(浏览器)发送响应*/void downloadExcel(HttpServletResponse response) throws IOException;
}

UserServiceImpl.java

package com.lm.easyexcel.service.impl;import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lm.easyexcel.entity.User;
import com.lm.easyexcel.mapper.UserMapper;
import com.lm.easyexcel.service.UserService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;@Service
public class UserServiceImpl implements UserService {@ResourceUserMapper userMapper;@Overridepublic void downloadExcel(HttpServletResponse response) throws IOException {String filename = URLEncoder.encode("myExcel","utf-8");response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-Disposition","attachment;filename=" + filename + ".xlsx");/***  EasyExcel的写文件操作,data()方法用来查询数据库数据返回list。* sheet为excel的工作表表名*/EasyExcel.write(response.getOutputStream(), User.class).sheet("sheet1").doWrite(data());}private List<User> data(){QueryWrapper<User> queryWrapper = new QueryWrapper<User>();List<User> list = userMapper.downloadExcel(queryWrapper);return list;}}

5.7 Controller

UserController.java

package com.lm.easyexcel.controller;import com.lm.easyexcel.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@RestController
public class UserController {@AutowiredUserService userServiceImpl;@GetMapping(value = "/downloadExcel",produces = {"application/vnd.ms-excel;charset=UTF-8"})@ResponseBodypublic void downloadExcel(HttpServletResponse response) throws IOException {userServiceImpl.downloadExcel(response);}
}

EasyExcel实现Mysql数据库Excel数据导出相关推荐

  1. 基于easyexcel的MySQL百万级别数据的excel导出功能

    前言 最近我做过一个MySQL百万级别数据的excel导出功能,已经正常上线使用了. 这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助. 原始需求:用户在U ...

  2. mysql实时采集Excel数据_通过mysql数据库excel表格数据采集汇总

    2017年本人被借调到教育局收集全县的扶贫数据,数据以EXCEL表格的方式分学校上报到乡镇教育管理中心汇总,然后教管中心上报到县资助中心汇总.这项工作看似简单,但却给我带来了无限的烦恼.上报上来的数据 ...

  3. linux将mysql导出表数据导入另一台服务器_远程linux服务器mysql数据库导入和导出.sql文件...

    今天对需要将服务器上的数据库放到本地环境,之前没怎么这么操作过,ORZ,弱鸡,这篇帖子不错,收藏了!!! 远程linux服务器mysql数据库导入和导出.sql文件 大部分情况本地开发环境为windo ...

  4. 导出远程mysql数据库中的表_shell脚本实现导出远程mysql数据库表数据至本地

    bin/main.sh脚本内容 #!/bin/bash #作用:用于同步远程mysql数据库表数据至本地 #作者:丁艺博 source /etc/profile source ~/.bash_prof ...

  5. pythonmysql数据分析_Python操作Mysql数据库入门——数据导入pandas(数据分析准备)...

    原标题:Python操作Mysql数据库入门--数据导入pandas(数据分析准备) 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求 ...

  6. pythonmysql查询转list_使用Python将Mysql的查询数据导出到文件的方法

    mysql官方提供了很多种connector,其中包括python的connector. 下载地址在:http://dev.mysql.com/downloads/connector/python/ ...

  7. mysql数据库导出最大值_4.6 MySQL数据库导入与导出攻略

    4.6 MySQL数据库导入与导出攻略 4.6.1 Linux下MySQL数据库导入与导出 1. MySQL数据库的导出命令参数 主要是通过两个mysql和mysqldump命令来执行 (1) MyS ...

  8. MySQL数据库中导入导出方法以及工具介绍

    MySQL数据库中导入导出方法以及工具介绍 1.MySQLimport的语法介绍: mysqlimport位于mysql/bin目录中,是mysql的一个载入(或者说导入)数据的一个非常有效的工具.这 ...

  9. python提取数据库数据_Python如何读取MySQL数据库表数据

    本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 ...

最新文章

  1. SCCM2012系列之三,SCCM2012部署前的IIS准备
  2. 递归c语言字符串最小编辑距离,算法设计与分析-编辑距离问题
  3. 珍惜那些爱你的人,不要令他们失望,加油吧,我们。
  4. HTML 样式兼容不同设备类型
  5. Java基础学习路线送给零基础的朋友
  6. vue项目没有router文件夹_vueRouter没有报错,但是页面渲染空白
  7. 使用系统规则测试System.in和System.out
  8. JqueryUI 引领Java开发新方式:专注UI,快速开发!(JqueryUI+jeecg结合, 升华的开发模式)
  9. 第九届蓝桥杯省赛C++A组第二题 ---星期一
  10. 《几何与代数导引》习题1.34.2
  11. CSS学习笔记:transition
  12. Ansys19.2安装及简单使用教程
  13. 苹果系统自带的计算机怎么恢复出厂设置,苹果电脑恢复出厂化设置的教程_苹果电脑怎样恢复出厂系统-win7之家...
  14. laravel 打包成zip并下载
  15. 爬虫之路——DAY2
  16. linux下kegg注释软件,网页工具KOBAS进行KEGG富集分析
  17. 金武彩印机械设备有限公司仓储管理系统设计与实现
  18. java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11.XToolkit异常解决
  19. 神武授权位置服务器,《神武3》X诸葛八卦村 多益网络第二个大型文创项目即将开启...
  20. mysql数据表操作_MySQL数据表基本操作实例详解

热门文章

  1. 江苏高考时间2021成绩查询,2021年江苏高考成绩什么时候出来 公布时间
  2. 有意思的一些免费API接口整理,包含官网地址以及简介
  3. PHP 在线预览文档
  4. 扩展欧几里得算法 | exgcd 证明 + 板子 + 习题
  5. R语言学习记录:unique()函数
  6. HTML中nbsp; ensp; emsp; thinsp; zwnj; zwj;等6种空白空格的区别
  7. 绿色专利数据集 1985-2020年上市公司绿色专利申请获得授权量数据 2011-2019地级市绿色专利数据
  8. notify和notifyAll区别
  9. python作业02
  10. setTimeout理解