最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成EasyExcel的步驟

 更新時間:2021年06月17日 14:24:04   作者:愛鼓搗的程序猿  
EasyExcel是阿里巴巴開源poi插件之一,主要解決了poi框架使用復雜,sax解析模式不容易操作,數(shù)據(jù)量大起來容易OOM,解決了POI并發(fā)造成的報錯。主要解決方式:通過解壓文件的方式加載,一行一行的加載,并且拋棄樣式字體等不重要的數(shù)據(jù),降低內(nèi)存的占用。

一 、EasyExcel簡介

EasyExcel優(yōu)勢

  •    注解式自定義操作。
  •    輸入輸出簡單,提供輸入輸出過程的接口
  •    支持一定程度的單元格合并等靈活化操作

二、常用注解

  • @ExcelProperty 指定當前字段對應excel中的那一列??梢愿鶕?jù)名字或者Index去匹配。當然也可以不寫,默認第一個字段就是index=0,以此類推。千萬注意,要么全部不寫,要么全部用index,要么全部用名字去匹配。千萬別三個混著用,除非你非常了解源代碼中三個混著用怎么去排序的。
  • @ExcelIgnore 默認所有字段都會和excel去匹配,加了這個注解會忽略該字段
  • @DateTimeFormat 日期轉換,用String去接收excel日期格式的數(shù)據(jù)會調(diào)用這個注解。里面的value參照java.text.SimpleDateFormat
  • @NumberFormat 數(shù)字轉換,用String去接收excel數(shù)字格式的數(shù)據(jù)會調(diào)用這個注解。里面的value參照java.text.DecimalFormat
  • @ExcelIgnoreUnannotated默認不加ExcelProperty 的注解的都會參與讀寫,加了不會參與

三、依賴

  <!-- easyexcel 主要依賴  這一個基本上就夠了-->
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>easyexcel</artifactId>
   <version>2.1.4</version>
</dependency>
    <!-- servlet-api -->
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>4.0.1</version>
   <scope>provided</scope>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.47</version>
</dependency>

四、監(jiān)聽

/**
 * EasyExcel 導入監(jiān)聽
 */
public class ExcelListener extends AnalysisEventListener {
    //可以通過實例獲取該值
    private List<Object> datas = new ArrayList<Object>();

    @Override
    public void invoke(Object o, AnalysisContext analysisContext) {
        datas.add(o);//數(shù)據(jù)存儲到list,供批量處理,或后續(xù)自己業(yè)務邏輯處理。
        doSomething(o);//根據(jù)自己業(yè)務做處理
    }

    private void doSomething(Object object) {
        //1、入庫調(diào)用接口
    }

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

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

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // datas.clear();//解析結束銷毀不用的資源
    }
}

五、接口導入Excel

try {
            //獲取文件名
            String filename = file.getOriginalFilename();
            //獲取文件流
            InputStream inputStream = file.getInputStream();
            //實例化實現(xiàn)了AnalysisEventListener接口的類
            ExcelListener listener = new ExcelListener();
            //傳入?yún)?shù)
            ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, listener);
            //讀取信息
            excelReader.read(new Sheet(1, 0, Test.class));
            //獲取數(shù)據(jù)
            List<Object> list = listener.getDatas();
            if (list.size() > 1) {
                for (int i = 0; i < list.size(); i++) {
                    Testobj = (Test) list.get(i);
                    JSONObject jo = new JSONObject();
                }
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

六、接口 導出Excel (HttpServletResponse response, HttpServletRequest request)

try {
    String filenames = "111111";
    String userAgent = request.getHeader("User-Agent");
    if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
        filenames = URLEncoder.encode(filenames, "UTF-8");
    } else {
        filenames = new String(filenames.getBytes("UTF-8"), "ISO-8859-1");
    }
    response.setContentType("application/vnd.ms-exce");
    response.setCharacterEncoding("utf-8");
    response.addHeader("Content-Disposition", "filename=" + filenames + ".xlsx");
    EasyExcel.write(response.getOutputStream(), Test.class).sheet("sheet").doWrite(testList);
} catch (Exception e) {
}

七、本地導入、本地導出

List<Test> testList = new ArrayList<>();
try {
    String strUrl = "C:\\Users\\Administrator\\Desktop\\json.xlsx";
    File multipartFile = new File(strUrl);
    InputStream inputStream = new FileInputStream(multipartFile);
    //實例化實現(xiàn)了AnalysisEventListener接口的類
    ExcelListener listener = new ExcelListener();
    //傳入?yún)?shù)
    ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, listener);
    //讀取信息
    excelReader.read(new Sheet(1, 0, Test.class));
    //獲取數(shù)據(jù)
    List<Object> list = listener.getDatas();
    if (list.size() > 1) {
        for (int i = 0; i < list.size(); i++) {
            Testobj = (Test) list.get(i);
        }
    }
} catch (Exception e) {
    System.out.println(e.getMessage());
}
try {
    String strUrl = "C:\\Users\\Administrator\\Desktop\\json"+System.currentTimeMillis()+".xlsx";
    EasyExcel.write(strUrl,Test.class).sheet("sheet").doWrite(testList);
} catch (Exception e) {
}

  以上就是EasyExcel的基礎使用過程,歡迎點贊關注交流。

以上就是SpringBoot集成EasyExcel的步驟的詳細內(nèi)容,更多關于SpringBoot集成EasyExcel的資料請關注腳本之家其它相關文章!

相關文章

  • sonar-scanner連接sonarquebe7的sonar.java.binaries問題的解決方案

    sonar-scanner連接sonarquebe7的sonar.java.binaries問題的解決方案

    今天小編就為大家分享一篇關于sonar-scanner連接sonarquebe7的sonar.java.binaries問題的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • springboot亂碼問題排查思路解析

    springboot亂碼問題排查思路解析

    這篇文章主要為大家介紹了springboot亂碼問題排查思路解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • java實現(xiàn)網(wǎng)上購物車程序

    java實現(xiàn)網(wǎng)上購物車程序

    這篇文章主要介紹了java實現(xiàn)網(wǎng)上購物車程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 淺談SpringBoot集成Redis實現(xiàn)緩存處理(Spring AOP實現(xiàn))

    淺談SpringBoot集成Redis實現(xiàn)緩存處理(Spring AOP實現(xiàn))

    這篇文章主要介紹了淺談SpringBoot集成Redis實現(xiàn)緩存處理(Spring AOP實現(xiàn)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Guava中這些Map技巧可以讓代碼量減少了50%

    Guava中這些Map技巧可以讓代碼量減少了50%

    guava提供了非常強大的操作,可以讓我們把java代碼寫的很簡潔,下面這篇文章主要給大家介紹了關于Guava中這些Map使用技巧可以讓代碼量減少了50%的相關資料,需要的朋友可以參考下
    2022-11-11
  • Java線程中的線程本地變量ThreadLocal詳解

    Java線程中的線程本地變量ThreadLocal詳解

    這篇文章主要介紹了Java線程中的線程本地變量ThreadLocal詳解,ThreadLocal存放的值是線程內(nèi)共享的,線程間互斥的,主要用于線程內(nèi)共享一些數(shù)據(jù),避免通過參數(shù)來傳遞,這樣處理后,能夠優(yōu)雅的解決一些實際問題,需要的朋友可以參考下
    2023-11-11
  • Java實現(xiàn)簡單密碼加密功能

    Java實現(xiàn)簡單密碼加密功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單密碼加密功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Java代碼規(guī)范與質(zhì)量檢測插件SonarLint的使用

    Java代碼規(guī)范與質(zhì)量檢測插件SonarLint的使用

    本文主要介紹了Java代碼規(guī)范與質(zhì)量檢測插件SonarLint的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Java異常跟蹤棧定義與用法示例

    Java異常跟蹤棧定義與用法示例

    這篇文章主要介紹了Java異常跟蹤棧定義與用法,結合具體實例形式分析了異常處理棧的概念、原理及相關使用技巧,需要的朋友可以參考下
    2018-05-05
  • 詳解eclipse將項目打包成jar文件的兩種方法及問題解決方法

    詳解eclipse將項目打包成jar文件的兩種方法及問題解決方法

    本文給大家介紹了eclipse中將項目打包成jar文件的兩種方法及其遇到問題解決方法,本文圖文并茂給大家介紹的非常詳細,需要的朋友可以參考下
    2017-12-12

最新評論

德令哈市| 井陉县| 枝江市| 湖南省| 都昌县| 玛多县| 金坛市| 德兴市| 怀来县| 青冈县| 菏泽市| 山阳县| 伊通| 蒙阴县| 元谋县| 长阳| 台湾省| 康平县| 交口县| 岳普湖县| 宁晋县| 临夏市| 湾仔区| 江津市| 东乡县| 怀安县| 自治县| 清镇市| 扶余县| 曲靖市| 彭泽县| 玉龙| 汝城县| 报价| 兰考县| 蒙自县| 丰县| 天等县| 丰顺县| 芮城县| 上杭县|