IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> EasyExcel多sheet页导入导出 -> 正文阅读

[开发工具]EasyExcel多sheet页导入导出

一、导入依赖

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

二、随便整个application.yml

server:
  # 服务器的HTTP端口
  port: 8080

三、拿两个DO举例

@Data
public class Student {

    @ExcelProperty(value = "学生姓名")
    private String studentName;

    @ExcelProperty(value = "科室号码")
    private Integer classNum;
}

@Data
public class User {

    @ExcelProperty(value = "用户名")
    private String name;

    @ExcelProperty(value = "年龄")
    private Integer age;
}

四、controller

@RestController
public class EasyController {


    /**
     * http://localhost:8080/export
     * desciption 多sheet导出
     */
    @GetMapping("/export")
    public void export(HttpServletResponse response) {
        try {
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            String fileName = URLEncoder.encode("test", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();

            WriteSheet userSheet = EasyExcel.writerSheet(0, "用户信息").head(User.class).build();
            List<User> userList = new LinkedList<>();

            User user1=new User();
            user1.setName("张三");
            user1.setAge(13);

            User user2=new User();
            user2.setName("李四");
            user2.setAge(14);

            userList.add(user1);
            userList.add(user2);
            excelWriter.write(userList, userSheet);

            WriteSheet studentSheet = EasyExcel.writerSheet(1, "学生信息").head(Student.class).build();
            List<Student> studentList = new LinkedList<>();

            Student student=new Student();
            student.setStudentName("王同学");
            student.setClassNum(1);

            Student student2=new Student();
            student2.setStudentName("王同学");
            student2.setClassNum(2);

            studentList.add(student);
            studentList.add(student2);
            excelWriter.write(studentList, studentSheet);

            //关闭流
            excelWriter.finish();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /**
     * desciption 多sheet导入
     */
    @PostMapping("/importData")
    public String importData(MultipartFile file) throws Exception {
        InputStream inputStream = file.getInputStream();
        ExcelReader excelReader = null;
        try {
            AnalysisEventListenerImpl listener = new AnalysisEventListenerImpl();
            excelReader = EasyExcel.read(inputStream, listener).build();
            ReadSheet readSheet1 = EasyExcel.readSheet(0).head(User.class).build();
            excelReader.read(readSheet1);
            List<Object> list1 = listener.getDatas();
            List<User> userList = (List<User>) (List) list1;
            for (User user : userList) {
                System.out.println(user);
            }
            listener.getDatas().clear();
            
            ReadSheet readSheet2 = EasyExcel.readSheet(1).head(Student.class).build();
            excelReader.read(readSheet2);
            List<Object> list2 = listener.getDatas();
            List<Student> studentList = (List<Student>) (List) list2;
            for (Student student : studentList) {
                System.out.println(student);
            }
            listener.getDatas().clear();
            return "导入成功";
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                throw new RuntimeException();
            }
            if (excelReader != null) {
                excelReader.finish();
            }
        }
    }
}

五、最后还有个监听

public class AnalysisEventListenerImpl extends AnalysisEventListener {

    //可以通过实例获取该值
    private List<Object> datas = new ArrayList<Object>();

    @Override
    public void invoke(Object o, AnalysisContext analysisContext) {
        datas.add(o);
    }

    public List<Object> getDatas() {
        return datas;
    }

    public void setDatas(List<Object> datas) {
        this.datas = datas;
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
    }
}

完事。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:40:32  更:2022-05-05 11:43:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 5:05:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码