茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1675462 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_0002.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2019/7/11 16:42:12

史上最全的Excel導入導出之easyexcel

喝水不忘挖井人,感謝阿里巴巴項目組提供了easyexcel工具類,github地址: https://github.com/alibaba/easyexcel

環境搭建

  • easyexcel 依賴(必須)
  • springboot (不是必須)
  • lombok (不是必須)

>
>
>
>
>
>
>
>
>
>


讀取excel文件

小於1000行數據

默認讀取

讀取Sheet1的全部數據


;
List;


指定讀取

下面是學生表.xlsx中Sheet1,Sheet2的數據
在這裡插入圖片描述
在這裡插入圖片描述
獲取Sheet1表頭以下的信息


;
//第一個1代表sheet1, 第二個1代表從第幾行開始讀取數據,行號最小值為0
Sheet sheet ;
List;

獲取Sheet2的所有信息


;
Sheet sheet ;
List;


大於1000行數據

默認讀取


;
List;


指定讀取


;
Sheet sheet ;
List;


導出excle

單個Sheet導出

無模型映射導出


;
List;
data;
data;
data;
List;
ExcelUtil;

結果
在這裡插入圖片描述

模型映射導出

1、定義好模型對像


;
;
;
;
;
/**
* @description:
* @author: chenmingjian
* @date: 19-4-3 14:44
*/

)
@Data
{
/**
* value: 表頭名稱
* index: 列的號, 0表示第一列
*/

)
;
)
;
)
;
}

2、調用方法


;
ArrayList;
{
TableHeaderExcelProperty tableHeaderExcelProperty ;
tableHeaderExcelProperty;
tableHeaderExcelProperty;
tableHeaderExcelProperty;
data;
}
ExcelUtil;


多個Sheet導出

1、定義好模型對像


;
;
;
;
;
/**
* @description:
* @author: chenmingjian
* @date: 19-4-3 14:44
*/

)
@Data
{
/**
* value: 表頭名稱
* index: 列的號, 0表示第一列
*/

)
;
)
;
)
;
}

2、調用方法


;
{
ArrayList;
{
TableHeaderExcelProperty tableHeaderExcelProperty ;
tableHeaderExcelProperty;
tableHeaderExcelProperty;
tableHeaderExcelProperty;
list;
}
Sheet sheet ;
sheet;
ExcelUtil;
multipleSheelPropety;
multipleSheelPropety;
list1;
}
ExcelUtil;


工具類


;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
/**
* @description:
* @author: chenmingjian
* @date: 19-3-18 16:16
*/

@Slf4j
{
;
{
initSheet ;
initSheet;
//設置自適應寬度
initSheet;
}
/**
* 讀取少於1000行數據
* @param filePath 文件絕對路徑
* @return
*/

{
;
}
/**
* 讀小於1000行數據, 帶樣式
* filePath 文件絕對路徑
* initSheet :
* sheetNo: sheet頁碼,默認為1
* headLineMun: 從第幾行開始讀取數據,默認為0, 表示從第一行開始讀取
* clazz: 返回數據List<Object> 中Object的類名
*/

{
{
;
}
sheet ;
InputStream fileStream ;
{
fileStream ;
;
{
log;
{
{
{
fileStream;
}
{
log;
}
}
;
}
/**
* 讀大於1000行數據
* @param filePath 文件覺得路徑
* @return
*/

{
;
}
/**
* 讀大於1000行數據, 帶樣式
* @param filePath 文件覺得路徑
* @return
*/

{
{
;
}
sheet ;
InputStream fileStream ;
{
fileStream ;
ExcelListener excelListener ;
EasyExcelFactory;
;
{
log;
{
{
{
fileStream;
}
{
log;
}
}
;
}
/**
* 生成excle
* @param filePath 絕對路徑, 如:/home/chenmingjian/Downloads/aaa.xlsx
* @param data 數據源
* @param head 表頭
*/

{
;
}
/**
* 生成excle
* @param filePath 絕對路徑, 如:/home/chenmingjian/Downloads/aaa.xlsx
* @param data 數據源
* @param sheet excle頁面樣式
* @param head 表頭
*/

{
sheet ;
{
List;
head;
sheet;
}
OutputStream outputStream ;
ExcelWriter writer ;
{
outputStream ;
writer ;
writer;
{
log;
{
{
{
writer;
}
{
outputStream;
}
{
log;
}
}
}
/**
* 生成excle
* @param filePath 絕對路徑, 如:/home/chenmingjian/Downloads/aaa.xlsx
* @param data 數據源
*/

{
;
}
/**
* 生成excle
* @param filePath 絕對路徑, 如:/home/chenmingjian/Downloads/aaa.xlsx
* @param data 數據源
* @param sheet excle頁面樣式
*/

{
{
;
}
sheet ;
sheet;
OutputStream outputStream ;
ExcelWriter writer ;
{
outputStream ;
writer ;
writer;
{
log;
{
{
{
writer;
}
{
outputStream;
}
{
log;
}
}
}
/**
* 生成多Sheet的excle
* @param filePath 絕對路徑, 如:/home/chenmingjian/Downloads/aaa.xlsx
* @param multipleSheelPropetys
*/

{
{
;
}
OutputStream outputStream ;
ExcelWriter writer ;
{
outputStream ;
writer ;
{
Sheet sheet ;
{
sheet;
}
writer;
}
{
log;
{
{
{
writer;
}
{
outputStream;
}
{
log;
}
}
}
/*********************匿名內部類開始,可以提取出去******************************/
@Data
{
;
;
}
/**
* 解析監聽器,
* 每解析一行會回調invoke()方法。
* 整個excel解析結束會執行doAfterAllAnalysed()方法
*
* @author: chenmingjian
* @date: 19-4-3 14:11
*/

@Getter
@Setter
{
;
/**
* 逐行解析
* object : 當前行的數據
*/

@Override
{
//當前行
// context.getCurrentRowNum()
{
datas;
}
}
/**
* 解析完所有數據後會調用該方法
*/

@Override
{
//解析結束銷毀不用的資源
}
}
/************************匿名內部類結束,可以提取出去***************************/
}


測試類


;
;
;
;
;
;
;
;
;
;
;
;
/**
* @description: 測試類
* @author: chenmingjian
* @date: 19-4-4 15:24
*/

@SpringBootTest
)
{
/**
* 讀取少於1000行的excle
*/

.Test
{
String filePath ;
List;
objects;
}
/**
* 讀取少於1000行的excle,可以指定sheet和從幾行讀起
*/

.Test
{
String filePath ;
Sheet sheet ;
List;
objects;
}
/**
* 讀取大於1000行的excle
* 帶sheet參數的方法可參照測試方法readLessThan1000RowBySheet()
*/

.Test
{
String filePath ;
List;
objects;
}
/**
* 生成excle
* 帶sheet參數的方法可參照測試方法readLessThan1000RowBySheet()
*/

.Test
{
String filePath ;
List;
data;
data;
data;
List;
ExcelUtil;
}
/**
* 生成excle, 帶用模型
* 帶sheet參數的方法可參照測試方法readLessThan1000RowBySheet()
*/

.Test
{
String filePath ;
ArrayList;
{
TableHeaderExcelProperty tableHeaderExcelProperty ;
tableHeaderExcelProperty;
tableHeaderExcelProperty;
tableHeaderExcelProperty;
data;
}
ExcelUtil;
}
/**
* 生成excle, 帶用模型,帶多個sheet
*/

.Test
{
ArrayList;
{
ArrayList;
{
TableHeaderExcelProperty tableHeaderExcelProperty ;
tableHeaderExcelProperty;
tableHeaderExcelProperty;
tableHeaderExcelProperty;
list;
}
Sheet sheet ;
sheet;
ExcelUtil;
multipleSheelPropety;
multipleSheelPropety;
list1;
}
ExcelUtil;
}
/*******************匿名內部類,實際開發中該對像要提取出去**********************/
/**
* @description:
* @author: chenmingjian
* @date: 19-4-3 14:44
*/

)
@Data
{
/**
* value: 表頭名稱
* index: 列的號, 0表示第一列
*/

)
;
)
;
)
;
}
/*******************匿名內部類,實際開發中該對像要提取出去**********************/
}


原文出處: 史上最全的Excel导入导出之easyexcel - 点缀星空 - CSDN博客
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|