文档章节

崛起于Springboot2.X + 200秒解决文件导入导出(56)

木九天
 木九天
发布于 2019/11/09 15:40
字数 453
阅读 381
收藏 3

《SpringBoot2.X心法总纲》

使用ExcelUtil快速实现对文件的导入导出系列。

1、pom文件

<dependency>
    <groupId>net.oschina.likaixuan</groupId>
    <artifactId>excelutil</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

2、实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    @Excel(title = "姓名")
    private String name;
    @Excel(title = "学号")
    private String stu_no;
    @Excel(title = "年龄")
    private int age;
}

3、controller接口

@RestController
public class ExcelController {

    /**
     * @Author:MuJiuTian
     * @Date:2019/11/9 下午3:14
     * @Description:excel导入数据
     */
    @PostMapping(value = "/importFile")
    public void importFile(MultipartFile file) throws Exception {
        // 1、读取文件列表内容
        List<Student> students = ExcelUtil.readXls(file.getBytes(),Student.class);

        // 2、处理业务逻辑,最后存储数据库操作,此步骤忽略,只讲ExcelUitl用法

        // 3、输出,打印到控制台
        students.stream().forEach(System.out::println);
    }

    /**
     * @Author:MuJiuTian
     * @Date:2019/11/9 下午3:14
     * @Description:数据导出到excel
     */
    @GetMapping(value = "/exportFile")
    public void exportFile(HttpServletResponse response) throws Exception {
        // 1、根据条件将需要导出数据查找出来 studentService.selectAll();这里不做处理
        List<Student> students = Arrays.asList(
                new Student("小汤","2013245060501",20),
                new Student("王轩","2013245060502",21),
                new Student("紫玉","2013245060503",18)
        );

        // 2、导出到具体路径(如d盘或者mac桌面)
        ExcelUtil.exportExcel("",students,Student.class);

        // 3、导出到浏览器(正常情况下我们使用浏览器下载)
        ExcelUtil.exportExcelOutputStream(response,students,Student.class);
    }


    // 测试 导入
    @PostMapping(value = "/test_import")
    public void test_import() throws Exception {
        List<Student> students = ExcelUtil.readXls("/Users/tentsuuhou/Desktop/excelutil.xlsx",Student.class);
        students.stream().forEach(System.out::println);
    }

    // 测试 导出
    @GetMapping(value = "/test_export")
    public void test_export(HttpServletResponse response) throws Exception {

        List<Student> students = Arrays.asList(
                new Student("小汤","2013245060501",20),
                new Student("王轩","2013245060502",21),
                new Student("紫玉","2013245060503",18)
        );
        ExcelUtil.exportExcelOutputStream(response,students,Student.class);
    }
}

4、测试导入

测试导入接口,准备文件如图:

执行接口:

http://localhost:8081/test_import

结果如下:

5、测试导出

执行接口:

http://localhost:8081/test_export

结果:

成功!

ExcelUtil框架Git地址

© 著作权归作者所有

木九天

木九天

粉丝 268
博文 287
码字总数 217528
作品 0
海淀
程序员
私信 提问
加载中

评论(4)

AldrichEugene
AldrichEugene
这几天我都在搞那个,还是很好用,性能比apached的poi高一些
木九天
木九天 博主
我没看懂那个怎么写…看上去太难了
AldrichEugene
AldrichEugene
阿里巴巴开源的easyExcel感觉更好一些,占用内存少,可以减少程序OOM
木九天
木九天 博主
我看过,那个不容易上手
崛起于Springboot2.X + 200秒war包部署(18)

《SpringBoot2.X心法总纲》 将springboot项目打包步骤: 1、启动类 extends SpringBootServletInitializer 2、启动类添加覆盖方法 @Overrideprotected SpringApplicationBuilder configure(......

木九天
2018/07/18
4.4K
0
崛起于Springboot2.X + Activiti5.22(42)

《SpringBoot2.X心法总纲》 (本篇博客已于2019-08-28优化更新) 声明:该博客主要是Springboot1.X和Springboot2.X集成Activiti5.22版本,并说一下两个版本的搭建不同的地方 技术:Springboo...

木九天
2018/12/17
3.7K
2
SpringBoot 2.x工程初始化(一)

文章的示例工程的功能以文件的上传下载为例 源码地址:https://gitee.com/jlzhou/SpringBoot2.x 快速开始 进入 https://start.spring.io 填写 Group/Artifact ,选择SpringBoot:2.1.0,选择...

jlzhou1207
2018/11/27
304
0
崛起于Springboot2.X + ip2region(31)

《SpringBoot2.X心法总纲》 ip2region:可以根据他获取一个具体ip的信息,国家、具体地址、网络服务商 1、添加依赖 <dependency> </dependency> 2、工具类 import org.lionsoul.ip2region.Da...

木九天
2018/08/03
1.8K
6
崛起于Springboot2.X + redis消息队列(52)

《SpringBoot2.X心法总纲》 我觉得redis消息队列不太好,虽然有消息队列的功能,也能做延迟,但是不建议使用redis做消息队列。 1、pom文件 <dependency> </dependency> 2、application.prope...

木九天
2019/09/26
208
0

没有更多内容

加载失败,请刷新页面

加载更多

如何仅克隆Git存储库的子目录? - How do I clone a subdirectory only of a Git repository?

问题: I have my Git repository which, at the root, has two sub directories: 我有我的Git存储库,它的根目录有两个子目录: /finisht/static When this was in SVN , /finisht was ch......

技术盛宴
37分钟前
45
0
【 开发指南 】智能家居技能

本文作者:DuerOs 目录 一、教学视频 二、整体架构 三、开发步骤&资料整理 四、常见问题解答 五、智能家居文档 树状提纲 ————————————————————————————————...

百度开发者中心
2019/03/29
96
0
008. 并发容器类 Map

1. JDK 源码学习方法 1. 演绎推导法 示例:因果推理。 因为 JAVA 中只提供了 BIO 和 NIO 两种方式,所以一切框架中,涉及到网络处理的,都可以用这两个知识点去探究原理。 2. 归纳总结法 示例...

紫穹
今天
114
0
如何使用sed替换换行符(\\ n)? - How can I replace a newline (\n) using sed?

问题: How can I replace a newline (" \\n ") with a space (" 如何将换行符(“ \\n ”)替换为空格(“ ") using the sed command? “)使用sed命令? I unsuccessfully tried: 我尝试失......

javail
今天
147
0
OSChina 周一乱弹 —— 原来这叫分别焦虑

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《A Careful Tearing》- Levi Patel 手机党少年们想听歌,请使劲儿戳(这里) 清明...

小小编辑
今天
236
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部