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

springboot整合Excel填充數(shù)據(jù)代碼示例

 更新時(shí)間:2023年08月31日 08:44:34   作者:無語堵上西樓  
這篇文章主要給大家介紹了關(guān)于springboot整合Excel填充數(shù)據(jù)的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用springboot具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

填充一組數(shù)據(jù)

準(zhǔn)備模板

封裝數(shù)據(jù)

import java.util.ArrayList;
import java.util.List;
/**
 * 使用實(shí)體類封裝填充數(shù)據(jù)
 *
 *  實(shí)體中成員變量名稱需要和Excel表各種{}包裹的變量名匹配
 */
@Data
public class FillData {
    private String name;
    private int age;
        // 生成多組數(shù)據(jù)代碼
        public static List<FillData> initFillData() {
        ArrayList<FillData> fillDatas = new ArrayList<FillData>();
        for (int i = 0; i < 10; i++) {
        FillData fillData = new FillData();
        fillData.setName("學(xué)生0" + i);
        fillData.setAge(10 + i);
        fillDatas.add(fillData);
        }
        return fillDatas;
        }
}

類填充形式

    @Test
    public void test1(){
        // 加載模板
        String templateFile="src/main/resources/excel/templte/fill_data_template1.xlsx";
        // 寫入文件
        String targetFileName = "單組數(shù)據(jù)填充.xlsx";
        // 準(zhǔn)備對象數(shù)據(jù)填充
        FillData fillData = new FillData();
        fillData.setName("學(xué)生1");
        fillData.setAge(10);
        // 生成工作簿對象
        ExcelWriterBuilder workBookWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile);
        // 獲取工作表并填充
        workBookWriter.sheet().doFill(fillData);
    }

Map形式填充 

 @Test
    public void test1(){
        // 加載模板
        String templateFile="src/main/resources/excel/templte/fill_data_template1.xlsx";
        // 寫入文件
        String targetFileName = "單組數(shù)據(jù)填充.xlsx";
        // 生成工作簿對象
        ExcelWriterBuilder workBookWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile);
//         使用Map數(shù)據(jù)填充
        HashMap<String, String> mapFillData = new HashMap<>();
        mapFillData.put("name", "學(xué)生1");
        mapFillData.put("age", "11");
        // 獲取第一個工作表填充并自動關(guān)閉流
        workBookWriter.sheet().doFill(mapFillData);
    }

結(jié)果 

填充多組數(shù)據(jù)

準(zhǔn)備模板

注意模板里面與上面相比是多了.的

封裝數(shù)據(jù)

與上面一樣,省略。

填充

@Test
    public void test02(){
        // 加載模板
        String templateFile="src/main/resources/excel/templte/fill_data_template2.xlsx";
        // 寫入文件
        String targetFileName = "多組數(shù)據(jù)填充.xlsx";
        List<FillData> fillDatas = FillData.initFillData();
        System.out.println(fillDatas);
        // 生成工作簿對象
        ExcelWriterBuilder workBookWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile);
        // 獲取第一個工作表填充并自動關(guān)閉流
        workBookWriter.sheet().doFill(fillDatas);
    }

結(jié)果

組合填充

準(zhǔn)備模板

即有多組數(shù)據(jù)填充,又有單一數(shù)據(jù)填充 。 

封裝數(shù)據(jù)

同上。

填充

 @Test
    public void test03(){
        // 加載模板
        String templateFile="src/main/resources/excel/templte/fill_data_template3.xlsx";
        // 目標(biāo)文件
        String targetFileName = "組合數(shù)據(jù)填充.xlsx";
        List<FillData> fillDatas = FillData.initFillData();
        // 生成工作簿對象
        ExcelWriter excelWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile).build();
        // 生成工作表對象
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        // 組合填充時(shí),因?yàn)槎嘟M填充的數(shù)據(jù)量不確定,需要在多組填充完之后另起一行
        FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
        // 填充并換行
        excelWriter.fill(fillDatas, fillConfig, writeSheet);
        HashMap<String, String> otherData = new HashMap<>();
        otherData.put("date", "2020-03-14");
        otherData.put("total", "100");
        excelWriter.fill(otherData, writeSheet);
        // 關(guān)閉
        excelWriter.finish();
    }

結(jié)果

水平填充

準(zhǔn)備模板

水平填充和多組填充模板一樣,不一樣的地方在于,填充時(shí)需要通過 FillConfig 對象設(shè)置水平填充。  

封裝數(shù)據(jù)

同上

填充

@Test
    public void test04(){
        // 加載模板
        String templateFile="src/main/resources/excel/templte/fill_data_template4.xlsx";
        // 寫入文件
        String targetFileName = "水平數(shù)據(jù)填充.xlsx";
        List<FillData> fillDatas = FillData.initFillData();
        // 生成工作簿對象
        ExcelWriter excelWriter = EasyExcel.write(targetFileName,FillData.class).withTemplate(templateFile).build();
        // 生成工作表對象
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        // 組合填充時(shí),因?yàn)槎嘟M填充的數(shù)據(jù)量不確定,需要在多組填充完之后另起一行
        FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
        // 填充
        excelWriter.fill(fillDatas, fillConfig, writeSheet);
        // 關(guān)閉
        excelWriter.finish();
    }

結(jié)果

資料

常用類

EasyExcel 入口類,用于構(gòu)建開始各種操作;

ExcelReaderBuilder 構(gòu)建出一個ReadWorkbook對象,即一個工作簿對象,對應(yīng)的是一個Excel文件;

ExcelWriterBuilder 構(gòu)建出一個WriteWorkbook對象,即一個工作簿對象,對應(yīng)的是一個Excel文件;

ExcelReaderSheetBuilder 構(gòu)建出一個ReadSheet對象,即一個工作表的對象,對應(yīng)的Excel中的每個sheet,一個工作簿可以有多個工作表;

ExcelWriterSheetBuilder 構(gòu)建出一WriteSheet對象,即一個工作表的對象,對應(yīng)的Excel中的每個sheet,一個工作簿可以有多個工作表;

ReadListener 在每一行讀取完畢后都會調(diào)用ReadListener來處理數(shù)據(jù),我們可以把調(diào)用service的代碼可以寫在其invoke方法內(nèi)部;

WriteHandler 在每一個操作包括創(chuàng)建單元格、創(chuàng)建表格等都會調(diào)用WriteHandler來處理數(shù)據(jù),對使用者透明不可見;

所有配置都是繼承的 Workbook的配置會被Sheet繼承。所以在用EasyExcel設(shè)置參數(shù)的時(shí)候,在EasyExcel…sheet()方法之前作用域是整個sheet,之后針對單個sheet。

讀取時(shí)的注解

@ExcelProperty

屬性名含義說明
index對應(yīng)Excel表中的列數(shù)默認(rèn)-1,建議指定時(shí)從0開始
value對應(yīng)Excel表中的列頭
converter成員變量轉(zhuǎn)換器自定義轉(zhuǎn)換器需要實(shí)Converter接口

@ExcelIgnore

標(biāo)注在成員變量上,默認(rèn)所有字段都會和excel去匹配,加了這個注解會忽略該字段  

@DateTimeFormat

標(biāo)注在成員變量上,日期轉(zhuǎn)換,代碼中用 String類型的成員變量 去接收 excel中日期格式的數(shù)據(jù) 會調(diào)用這個注解。里面的 value 參照 java.text.SimpleDateFormat

@NumberFormat

標(biāo)注在成員變量上,數(shù)字轉(zhuǎn)換,代碼中用 String類型的成員變量 去接收 excel數(shù)字格式的數(shù)據(jù) 會調(diào)用這個注解。里面的 value 參照 java.text.DecimalFormat

@ExcelIgnoreUnannotated

標(biāo)注在類上。不標(biāo)注該注解時(shí),默認(rèn)類中所有成員變量都會參與讀寫,無論是否在成員變量上加了@ExcelProperty 的注解。標(biāo)注該注解后,類中的成員變量如果沒有標(biāo)注@ExcelProperty 注解將不會參與讀寫。

@ExcelProperty

屬性名含義說明
index對應(yīng)Excel表中的列數(shù)默認(rèn)-1,指定時(shí)建議從0開始
value對應(yīng)Excel表中的列頭
converter成員變量轉(zhuǎn)換器自定義轉(zhuǎn)換器需要實(shí)Converter接口

總結(jié)

到此這篇關(guān)于springboot整合Excel填充數(shù)據(jù)的文章就介紹到這了,更多相關(guān)springboot整合Excel填充數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?axios與spring前后端分離傳參規(guī)范總結(jié)

    Java?axios與spring前后端分離傳參規(guī)范總結(jié)

    這篇文章主要介紹了Java?axios與spring前后端分離傳參規(guī)范總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Spring?Boot/Spring?MVC核心注解的作用詳解

    Spring?Boot/Spring?MVC核心注解的作用詳解

    本文詳細(xì)介紹了SpringBoot和SpringMVC中最常用的15個核心注解,涵蓋了請求路由映射、參數(shù)綁定、RESTful?API、組件管理、數(shù)據(jù)校驗(yàn)等內(nèi)容,通過豐富的代碼示例和圖表幫助開發(fā)者全面掌握這些注解,提升開發(fā)效率和代碼質(zhì)量,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • util.Date與sql.Date的相互轉(zhuǎn)換過程

    util.Date與sql.Date的相互轉(zhuǎn)換過程

    本文介紹了Java中兩個常用日期類的區(qū)別和相互轉(zhuǎn)換方法,包括java.util.Date和java.sql.Date,并展示了如何使用SimpleDateFormat進(jìn)行日期格式化
    2026-01-01
  • JAVA多線程中join()方法的使用方法

    JAVA多線程中join()方法的使用方法

    雖然關(guān)于討論線程join()方法的博客已經(jīng)非常極其特別多了,但是前幾天我有一個困惑卻沒有能夠得到詳細(xì)解釋,當(dāng)系統(tǒng)中正在運(yùn)行多個線程時(shí),join()到底是暫停了哪些線程,所以本文詳細(xì)解釋一下希望能幫助到和我有相同困惑的同學(xué)
    2021-05-05
  • Java語言實(shí)現(xiàn)非遞歸實(shí)現(xiàn)樹的前中后序遍歷總結(jié)

    Java語言實(shí)現(xiàn)非遞歸實(shí)現(xiàn)樹的前中后序遍歷總結(jié)

    今天小編就為大家分享一篇關(guān)于Java語言實(shí)現(xiàn)非遞歸實(shí)現(xiàn)樹的前中后序遍歷總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SpringBoot使用Kaptcha實(shí)現(xiàn)驗(yàn)證碼的生成與驗(yàn)證功能

    SpringBoot使用Kaptcha實(shí)現(xiàn)驗(yàn)證碼的生成與驗(yàn)證功能

    這篇文章主要介紹了SpringBoot使用Kaptcha實(shí)現(xiàn)驗(yàn)證碼的生成與驗(yàn)證功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • java如何根據(jù)日期生成單號

    java如何根據(jù)日期生成單號

    這篇文章主要介紹了java如何根據(jù)日期生成單號問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Java中Cglib代理和JDK代理的區(qū)別詳解

    Java中Cglib代理和JDK代理的區(qū)別詳解

    這篇文章主要介紹了Java中Cglib代理和JDK代理的區(qū)別詳解,Cglib代理功能更強(qiáng),無論目標(biāo)類是否實(shí)現(xiàn)了接口都可以代理,他是基于繼承的方式來代理目標(biāo)類,如果目標(biāo)類也實(shí)現(xiàn)了接口,代理類也會實(shí)現(xiàn)一次,需要的朋友可以參考下
    2023-09-09
  • netty?pipeline中的inbound和outbound事件傳播分析

    netty?pipeline中的inbound和outbound事件傳播分析

    這篇文章主要為大家介紹了netty?pipeline中的inbound和outbound事件傳播分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Java集合List與Array的相互轉(zhuǎn)換

    Java集合List與Array的相互轉(zhuǎn)換

    本篇文章主要介紹了Java集合List與Array的相互轉(zhuǎn)換,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論

重庆市| 阿图什市| 梧州市| 衢州市| 玉龙| 桐柏县| 阿鲁科尔沁旗| 遂平县| 黄梅县| 临高县| 乌海市| 峨山| 盐源县| 沾化县| 安图县| 鸡西市| 民丰县| 鱼台县| 灯塔市| 长寿区| 延长县| 安陆市| 东港市| 三门峡市| 清新县| 大冶市| 宣威市| 衡阳市| 方正县| 汝南县| 武汉市| 合江县| 玉溪市| 祁东县| 昭平县| 吐鲁番市| 巴里| 拉萨市| 巴青县| 百色市| 成武县|