Springboot导出Excle

集成Poi

Apache Poi 是 Apache 的一个开源项目,用Java代码通过 poi 技术可以实现 读取 和 生成 Excel 文档。通过 office Excel软件或者 wps 常用的Excel格式有两种:xls 和 xlsx

如果要通过 SpringBoot 导入导入 Excel 文件,就要通过类和方法来进行。

于是在 Poi 中对以上提到的所有的名词都做了一定的封装。对应关系如下:

Excel中的概念 Poi对应的对象
Excel 文件 HSSFWorkbook (xls)XSSFWorkbook(xlsx)
Excel 的工作表 HSSFSheet
Excel 的行 HSSFRow
Excel 中的单元格 HSSFCell
Excel 字体 HSSFFont
Excel 单元格样式 HSSFCellStyle
Excel 颜色 HSSFColor
合并单元格 CellRangeAddress

1. 在项目中导入依赖

 
            org.apache.poi
            poi
            3.14
        
        
            org.apache.poi
            poi-ooxml
            3.14
        
        
            org.apache.poi
            poi-ooxml-schemas
            3.14
        

2.导出的实体类

package com.domain;

import java.io.Serializable;

public class User implements Serializable {

    private  Integer id;
    private  String name;
    private  String sex;
    public Integer getId(){
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

3.测试类中写导出的代码

package com;
import com.domain.User;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;

public class test {

    @Test
    public void test2() throws IOException {
//        0.准备数据
        User user = new User();
        user.setId(1);
        user.setName("hhhh");
        user.setSex("男");

        String[] titles = {"编号","名字","性别"};

        /**
         * 先写入 标题栏数据
         */
//        1.创建文件对象   创建HSSFWorkbook只能够写出为xls格式的Excel
//        要写出 xlsx 需要创建为 XSSFWorkbook 两种Api基本使用方式一样
        HSSFWorkbook workbook = new HSSFWorkbook();

//        2.创建表对象
        HSSFSheet sheet = workbook.createSheet("users");

//        3.创建标题栏(第一行)  参数为行下标  行下标从0开始
        HSSFRow titleRow = sheet.createRow(0);

//        4.在标题栏中写入数据
        for (int i = 0; i < titles.length; i++) {
//            创建单元格
            HSSFCell cell = titleRow.createCell(i);
            cell.setCellValue(titles[i]);
        }
        /**
         * 写入用户数据
         */
//       5 创建行 如果是用户数据的集合 需要遍历
        HSSFRow row = sheet.createRow(1);

//       6 将用户数据写入到行中
        row.createCell(0).setCellValue(user.getId());
        row.createCell(1).setCellValue(user.getName());
        row.createCell(2).setCellValue(user.getSex());

//        文件保存到本地 参数为要写出的位置,需在本地建好文件
        workbook.write(new FileOutputStream("E:\\users\\hhh.xls"));
    }
}

生成的Excel文件如下

Springboot导出Excle_第1张图片

多个数据导出

使用Easypoi 

导入依赖


            cn.afterturn
            easypoi-base
            3.2.0
        
        
            cn.afterturn
            easypoi-web
            3.2.0
        
        
            cn.afterturn
            easypoi-annotation
            3.2.0
        

EasyPoi是注解式开发,给导出的实体类加@Excle注解

package com.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;

public class Teacher {
    private Integer teacherId;
    /**
     * 名字
     */
    @Excel(name="老师名字")
    private String teacherName;
    /**
     * 头像图片地址
     */
    @Excel(name="老师图片")
    private String teacherImage;
    /**
     * 老师的状态 0代表正常 1代表删除
     */
    @Excel(name="老师状态")
    private Integer teacherStatus;

    public Integer getTeacherId() {
        return teacherId;
    }

    public void setTeacherId(Integer teacherId) {
        this.teacherId = teacherId;
    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

    public String getTeacherImage() {
        return teacherImage;
    }

    public void setTeacherImage(String teacherImage) {
        this.teacherImage = teacherImage;
    }

    public Integer getTeacherStatus() {
        return teacherStatus;
    }

    public void setTeacherStatus(Integer teacherStatus) {
        this.teacherStatus = teacherStatus;
    }
}

测试类中写导出代码

  /**
     * easypoi导出
     */
    @Test
    public void test4() throws IOException {
//        模拟数据
        List list = new ArrayList<>();
        list.add(new Teacher(1,"张老师","hhh.jpg",1));
        list.add(new Teacher(2,"李老师","hhh.jpg",1));
        list.add(new Teacher(3,"李老师","hhh.jpg",1));
        list.add(new Teacher(4,"李老师","hhh.jpg",1));
        list.add(new Teacher(5,"李老师","hhh.jpg",1));
        list.add(new Teacher(6,"李老师","hhh.jpg",1));
        /**
         * 导出参数对象
         * 参数1 标题
         * 参数2 表的名字
         */
        ExportParams exportParams = new ExportParams("所有老师数据","teacher");
        /**
         * exportExcel 导出Excel文件
         * 参数1 导出参数对象
         * 参数2 要导出的实体类的类对象
         * 参数3 要导出的数据 需要一个集合  数据库查询出来的老师对象的集合
         *
         * 返回值就是封装好的文件对象
         */
        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, Teacher.class, list);

        workbook.write(new FileOutputStream("E:\\users\\teacher.xls"));

    }

导出的excle如下:

Springboot导出Excle_第2张图片

你可能感兴趣的:(SpringBoot)