EasyPoi, Excel資料的匯入匯出

溫和的洛瑞發表於2020-10-01

        easypoi方便簡單的寫出Excel匯出,Excel模板匯出,Excel匯入,Word模板匯出,通過簡單的註解和模板 語言(熟悉的表示式語法),完成以前複雜的寫法

使用easypoi

        引入依賴

<dependency>
  <groupId>cn.afterturn</groupId>
  <artifactId>easypoi-base</artifactId>
  <version>3.2.0</version>
</dependency>

<dependency>
  <groupId>cn.afterturn</groupId>
  <artifactId>easypoi-web</artifactId>
  <version>3.2.0</version>
</dependency>

<dependency>
  <groupId>cn.afterturn</groupId>
  <artifactId>easypoi-annotation</artifactId>
  <version>3.2.0</version>
</dependency>

     註解

  • @Excel 作用到filed上面,是對Excel一列的一個描述

  • @ExcelCollection 表示一個集合,主要針對一對多的匯出,比如一個老師對應多個科目,科目就可以用集合表示

  • @ExcelEntity 表示一個繼續深入匯出的實體,但他沒有太多的實際意義,只是告訴系統這個物件裡面同樣有匯出的欄位

  • @ExcelIgnore 欄位不匯入匯出

  • @ExcelTarget 這個是作用於最外層的物件,描述這個物件的id,以便支援一個物件可以針對不同匯出做出不同處理

@ExcelTarget

  //標識這個類是可以被easypoi匯入匯出的類
  value : id唯一標識
  height:設定單元格高度
  width:這隻單元格寬度

  @ExcelTarget(value = "users") // 唯一標識作用
  public class User implements Serializable {

  }

@Excel

    //用在屬性上面,對錶格列的設定
    name:表格的列名
    orderNum:屬性在列中的順序
    format:匯入匯出時間的格式
    suffix:設定資料的字尾
    width:設定表格的寬度
    replace:原資料替換指定資料
    savePath:設定匯入excel中圖片的儲存路徑
    type:匯出型別 1 是文字 2 是圖片,3 是函式,10 是數字 預設是文字
 

    @Excel(name="編號",orderNum = "0")
    private String id;
    @Excel(name="姓名" ,orderNum = "1")
    private String name;
    @Excel(name="年齡",suffix = "歲",orderNum = "3")
    private Integer age;
    @Excel(name = "生日",width = 30,format = "yyyy-MM-dd HH:mm:ss",orderNum = "2")
    private Date birthday;
    @Excel(name = "狀態",replace = {"可用_0","不可用_1"},orderNum = "4")
    private String status;



匯出excel

 匯出基本資料

1,定義物件

@ExcelTarget(value = "users") // 唯一標識作用
public class User implements Serializable {
    @Excel(name="編號",orderNum = "0")
    private String id;
    @Excel(name="姓名" ,orderNum = "1")
    private String name;
    @Excel(name="年齡",suffix = "歲",orderNum = "3")
    private Integer age;
    @Excel(name = "生日",width = 30,format = "yyyy-MM-dd HH:mm:ss",orderNum = "2")
    private Date birthday;
    @Excel(name = "狀態",replace = {"可用_0","不可用_1"},orderNum = "4")
    private String status;
}

2,測試資料

public List<User> getUser(){
        ArrayList<User> users = new ArrayList<User>();
        for (int i = 0;i<10;i++){
            User user = new User();
            user.setId(String.valueOf(i));
            user.setName("小明");
            user.setAge(10+i);
            user.setBirthday(new Date());
            if (i%2==0){
                user.setStatus("1");
            }else{
                user.setStatus("0");
            }
            users.add(user);
        }
        return users;
}

3,匯出Excel

// 匯出到Excel
    @Test
    public void setExcel()throws IOException {
        List<User> user = getUser();
        // 匯出Excel
        //ExportParams匯出配置的物件,匯出的型別,匯出的資料集合
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("使用者資訊列表", "使用者資訊"),User.class, user);
        //把Excel寫到指定位置
        FileOutputStream fileOutputStream = new FileOutputStream("C:/upload/333.xls");
        workbook.write(fileOutputStream);
        fileOutputStream.close();
        workbook.close();
    }

4,檢視excel

 

相關文章