如何使用 Java 灵活读取 excel 内容 ?

createh52个月前 (02-01)技术教程19

记录一次用EasyExcel实现Excel导入导出

以前工作中实现Excel操作都是用的公司封装好的功能或者用JXL和POI,最近发现了一款excel操作神器EasyExcel,看了源码之后是真香啊,用起来简直不要太爽! 下面就先简单的实现一个导入导出,后面的其他功能再慢慢研究,废话不多说,上代码:

先要添加maven依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.0.5</version>
</dependency>

然后可以直接在实体类中配置表头,@ExcelProperty()就是用来设置表头的,也可以这样写:@ExcelProperty(value="名称",index=索引),如果不需要某个字段,可以使用@ExcelIgnore注解忽略;此外@ExcelProperty()还有很多配置各种类型的表头,详情可以参考EasyExcel官方文档

@TableName(value = "user")
@Data
public class User implements Serializable {
    //@ExcelProperty:配置表头
    @ExcelProperty("主键")
    private String id;
    @ExcelProperty("姓名")
    private String yhxm;
    @ExcelProperty("性别")
    private String yhxb;
    @ExcelProperty("登陆账号")
    private String yhzh;
    @ExcelProperty("登陆密码")
    private String yhmm;
    @ExcelProperty("出生年月")
    private Date csrq;
}

导出:

@PostMapping("ExportExcel")
public void ExportExcel() {
    // 设置文件导出的路径
    String realPath = "D://wsfile/";
    File folder = new File(realPath);
    if (!folder.isDirectory()){
        folder.mkdirs();
    }
    String fileName = realPath  + "User" + System.currentTimeMillis() + ".xlsx";
    // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为用户表 然后文件流会自动关闭
    EasyExcel.write(fileName, User.class).sheet("用户表").doWrite(data());
}

public List<User> data() {
    //查询用户表,具体service层实现就不写了
    List<User> list1 = loginService.findUser();
    return list1;
}

当然也可以直接这样写,就不用另外再写一个方法了,只要保证返回的是List就行:

@PostMapping("ExportExcel")
public void ExportExcel() {
    // 设置文件导出的路径
    String realPath = "D://wsfile/";
    File folder = new File(realPath);
    if (!folder.isDirectory()){
        folder.mkdirs();
    }
    String fileName = realPath  + "User" + System.currentTimeMillis() + ".xlsx";
    EasyExcel.write(fileName, User.class).sheet("用户表").doWrite(loginService.findUser());
}

下面用postman来测试一下:

成功了,在我配置的路径D:/wsfile/里看到了刚刚导出的用户表文件

打开看一下,信息没问题!

再来看一下导入

导入:

直接将文件的输入流导入

@PostMapping("ImportExcel")
public void ImportExcel(MultipartFile multipartFile) throws IOException {
    if (multipartFile.isEmpty()) {
       return;
    }
    // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
    // 这里每次会读取3000条数据 然后返回过来 直接调用使用数据就行
    EasyExcel.read(multipartFile.getInputStream(), User.class, new PageReadListener<User>(dataList -> {
        for (User user : dataList) {
            //将导入的数据用mybatisPlus一个个添加进数据库
            loginMapper.insert(user);
        }
    })).sheet().doRead();
}

下面我们来测试一下:

成功后查询数据库,可以看到刚刚要导入的内容成功了

至此一个简单的EasyExcel操作Excel就完成啦!

原文链接:https://mp.weixin.qq.com/s/I2JIFw_f7JKSoOYjvprnTQ

相关文章

Hutool Java工具类库导出Excel,超级简单

作者:程序猿的内心独白原文链接:http://suo.im/5Zxx2L前言在开发应用系统的时候,导出文件是必不可放的功能。以前用过POI、easyexcel等工具的导入导出功能,但总感觉太麻烦了,代...

java大牛告诉你这样导出excel更加简单高效

1.简述在java开发项目,我们经常会遇到将数据导出到Excel表格的需求 ,比较流行的使用POI、EasyExcel等。Apache POI是一个Java API,用于处理Microsoft Off...

【干货】如何使用Java实现百万数据的Excel导出功能?

Java作为一种常用的编程语言,在实现大量数据导出功能时具有很高的效率和可扩展性。本文将介绍如何使用Java实现百万数据的Excel导出功能。一、需求分析在很多实际应用场景中,我们需要将大量数据导出到...

【Java技巧】高效数据传输:Java通过绑定快速将数据导出至Excel

前言把数据导出至 Excel 是很常见的需求,而数据的持久化,往往又放在数据库中。因此把数据库中的数据导出到 Excel中,成了非常普遍的一个需求。以关系型数据库为例,数据表是一个二维矩阵,但是为了易...

如何在SpringBoot中实现Excel数据导出功能?

在一些企业级的应用中,对于数据导出成Excel表格的需求是一个非常常见的需求,在SpringBoot中,我们可以借助于Apache POI库来实现这个需求,下面我们就来详细介绍一下如何在Spring...

原来用hutool导入导出Excel这么丝滑!

1. hutool 工具介绍unset这个我就不用过多介绍了,它是一个非常好用的 Java 工具类库。我们在日常工作中用到的工具类,他都有。官网:https://plus.hutool.cn/ uns...