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

SpringBoot集成EasyExcel的步驟

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

一 、EasyExcel簡介

EasyExcel優(yōu)勢

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

二、常用注解

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

三、依賴

  <!-- easyexcel 主要依賴  這一個(gè)基本上就夠了-->
<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 導(dǎo)入監(jiān)聽
 */
public class ExcelListener extends AnalysisEventListener {
    //可以通過實(shí)例獲取該值
    private List<Object> datas = new ArrayList<Object>();

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

    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();//解析結(jié)束銷毀不用的資源
    }
}

五、接口導(dǎo)入Excel

try {
            //獲取文件名
            String filename = file.getOriginalFilename();
            //獲取文件流
            InputStream inputStream = file.getInputStream();
            //實(shí)例化實(shí)現(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());
        }

六、接口 導(dǎo)出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) {
}

七、本地導(dǎo)入、本地導(dǎo)出

List<Test> testList = new ArrayList<>();
try {
    String strUrl = "C:\\Users\\Administrator\\Desktop\\json.xlsx";
    File multipartFile = new File(strUrl);
    InputStream inputStream = new FileInputStream(multipartFile);
    //實(shí)例化實(shí)現(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的基礎(chǔ)使用過程,歡迎點(diǎn)贊關(guān)注交流。

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

相關(guān)文章

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

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

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

    springboot亂碼問題排查思路解析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了Java異常跟蹤棧定義與用法,結(jié)合具體實(shí)例形式分析了異常處理?xiàng)5母拍?、原理及相關(guān)使用技巧,需要的朋友可以參考下
    2018-05-05
  • 詳解eclipse將項(xiàng)目打包成jar文件的兩種方法及問題解決方法

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

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

最新評論

全州县| 中牟县| 崇明县| 宁陕县| 花垣县| 吐鲁番市| 柘荣县| 邵东县| 元朗区| 宣武区| 尚志市| 安徽省| 建宁县| 拜城县| 内丘县| 介休市| 安仁县| 汝南县| 资兴市| 昌江| 海兴县| 石林| 中江县| 县级市| 太康县| 赣榆县| 冀州市| 太白县| 永兴县| 墨脱县| 渑池县| 德惠市| 灵武市| 万山特区| 望城县| 政和县| 武冈市| 自贡市| 佳木斯市| 文登市| 平利县|