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

使用hutool工具進(jìn)行導(dǎo)入導(dǎo)出excel表格

 更新時(shí)間:2023年10月31日 09:29:32   作者:Java|小白  
如何在后臺(tái)添加導(dǎo)入導(dǎo)出表格的功能呢,本期的文章將會(huì)帶領(lǐng)小伙伴們一起實(shí)現(xiàn)此功能,文中有詳細(xì)的代碼示例和圖文介紹,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

如何在后臺(tái)添加導(dǎo)入導(dǎo)出表格的功能呢,本期的文章將會(huì)帶領(lǐng)小伙伴們一起實(shí)現(xiàn)此功能

1.先引入hutool的相關(guān)依賴(lài)

 <!--hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.20</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

2.導(dǎo)出 

創(chuàng)建一個(gè)Controller進(jìn)行測(cè)試 

  //表格導(dǎo)出接口
    @GetMapping("/export")
    public void export(HttpServletResponse response) throws IOException {
        //查詢(xún)所有用戶
        List<User> list= userService.list();
        //在內(nèi)存操作,寫(xiě)到瀏覽器
        ExcelWriter writer= ExcelUtil.getWriter(true);
 
        //自定義標(biāo)題別名
        writer.addHeaderAlias("username","用戶名");
        writer.addHeaderAlias("password","密碼");
        writer.addHeaderAlias("nickname","昵稱(chēng)");
        writer.addHeaderAlias("email","郵箱");
        writer.addHeaderAlias("phone","電話");
        writer.addHeaderAlias("address","地址");
        writer.addHeaderAlias("createTime","創(chuàng)建時(shí)間");
 
        //默認(rèn)配置
        writer.write(list,true);
        //設(shè)置content—type
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8");
 
        //設(shè)置標(biāo)題
        String fileName= URLEncoder.encode("用戶信息","UTF-8");
        //Content-disposition是MIME協(xié)議的擴(kuò)展,MIME協(xié)議指示MIME用戶代理如何顯示附加的文件。
        response.setHeader("Content-Disposition","attachment;filename="+fileName+".xlsx");
        ServletOutputStream outputStream= response.getOutputStream();
 
        //將Writer刷新到OutPut
        writer.flush(outputStream,true);
        outputStream.close();
        writer.close();
    }

測(cè)試結(jié)果如下

Vue前端使用這個(gè)代碼進(jìn)行訪問(wèn)即可

  //點(diǎn)擊函數(shù)exp, 導(dǎo)出表格
            exp(){
                window.open("http://localhost:9090/user/export")
            }

3.導(dǎo)入

創(chuàng)建一個(gè)Controller進(jìn)行測(cè)試 

因?yàn)槲仪懊鎸?dǎo)出設(shè)置了別名,所以這里我選擇用第二種方式,

接下來(lái)可以去postman驗(yàn)證是否能實(shí)現(xiàn)功能

/**
     * 導(dǎo)入excel
     * @param file
     */
    @PostMapping("/import")
    public void importExcel(MultipartFile file) throws IOException {
        //1.第一種 頭必須和實(shí)體(英文)一樣
        //文件處理成io流
        InputStream in = file.getInputStream();
//        //io流給ExcelReader
        ExcelReader excelReader=ExcelUtil.getReader(in);
//        //讀取數(shù)據(jù)且轉(zhuǎn)化為list
//        List<User> list = excelReader.readAll(User.class);
 
        //2.第二種導(dǎo)入方式
        //忽略第一行頭(第一行是中文的情況),直接讀取表的內(nèi)容
        List<List<Object>> list = excelReader.read(1);
        List<User> listUser = CollUtil.newArrayList();
        for (List<Object> row: list) {
            User user=new User();
            user.setUsername(row.get(0).toString());
            user.setPassword(row.get(1).toString());
            user.setNickname(row.get(2).toString());
            user.setNickname(row.get(3).toString());
            user.setPhone(row.get(4).toString());
            user.setAddress(row.get(5).toString());
            listUser.add(user);
//            ****類(lèi)似一一對(duì)應(yīng)****
        }
        //批量注冊(cè)進(jìn)數(shù)據(jù)庫(kù)
        userService.saveBatch(listUser);
    }

前端的話我是用的elemen-ui

      <el-upload action="http://localhost:9090/user/import"  
                    :show-file-list="false" accept="xlsx" 
                    :on-success="handleImportSuccess" 
                    style="display: inline-block;margin-right: 5px">
           <el-button type="primary">導(dǎo)入 <i class="el-icon-bottom"></i></el-button>
      </el-upload>

on-success是一個(gè)鉤子函數(shù),彈了一個(gè)插入成功的信息跟刷新頁(yè)面的操作

//導(dǎo)入,鉤子函數(shù)進(jìn)行頁(yè)面的提示跟成功后頁(yè)面的刷新
            handleImportSuccess(){
                this.$message.success("導(dǎo)入成功")
                this.load();
            }

4.效果圖

以上就是使用hutool工具進(jìn)行導(dǎo)入導(dǎo)出excel表格的詳細(xì)內(nèi)容,更多關(guān)于hutool導(dǎo)入導(dǎo)出excel表格的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實(shí)現(xiàn)Excel轉(zhuǎn)PDF的完整方案分享

    Java實(shí)現(xiàn)Excel轉(zhuǎn)PDF的完整方案分享

    在企業(yè)數(shù)據(jù)報(bào)表場(chǎng)景中,Excel轉(zhuǎn)PDF是實(shí)現(xiàn)文檔安全分發(fā)的剛需,本文主要和大家分享了如何使用Java自動(dòng)化實(shí)現(xiàn)該流程,需要的小伙伴可以參考一下
    2025-08-08
  • Java時(shí)間轉(zhuǎn)換成unix時(shí)間戳的方法

    Java時(shí)間轉(zhuǎn)換成unix時(shí)間戳的方法

    這篇文章主要為大家詳細(xì)介紹了Java時(shí)間轉(zhuǎn)換成unix時(shí)間戳的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • SpringBoot中實(shí)現(xiàn)Redis緩存預(yù)熱

    SpringBoot中實(shí)現(xiàn)Redis緩存預(yù)熱

    緩存預(yù)熱是一種在系統(tǒng)啟動(dòng)后,但在實(shí)際使用前將數(shù)據(jù)加載到緩存中的技術(shù),本文主要來(lái)和大家一起探討如何在Spring Boot應(yīng)用程序中實(shí)現(xiàn)Redis緩存預(yù)熱,以確保系統(tǒng)在處理請(qǐng)求前就已經(jīng)處于最佳狀態(tài),感興趣的可以了解下
    2023-11-11
  • 完美解決springboot中使用mybatis字段不能進(jìn)行自動(dòng)映射的問(wèn)題

    完美解決springboot中使用mybatis字段不能進(jìn)行自動(dòng)映射的問(wèn)題

    今天在springboot中使用mybatis的時(shí)候不能字段不能夠進(jìn)行自動(dòng)映射,接下來(lái)給大家給帶來(lái)了完美解決springboot中使用mybatis字段不能進(jìn)行自動(dòng)映射的問(wèn)題,需要的朋友可以參考下
    2023-05-05
  • 詳解Java如何優(yōu)雅地書(shū)寫(xiě)if-else

    詳解Java如何優(yōu)雅地書(shū)寫(xiě)if-else

    在日常開(kāi)發(fā)中我們常常遇到有多個(gè)if?else的情況,之間書(shū)寫(xiě)顯得代碼冗余難看,對(duì)于追求更高質(zhì)量代碼的同學(xué),就會(huì)思考如何優(yōu)雅地處理這種代碼。本文我們就來(lái)探討下幾種優(yōu)化if?else的方法
    2022-08-08
  • Java通過(guò)正則表達(dá)式獲取字符串中數(shù)字的方法示例

    Java通過(guò)正則表達(dá)式獲取字符串中數(shù)字的方法示例

    最近工作中遇到了一個(gè)需求,需要利用java獲取字符串中的數(shù)字,嘗試幾種方法后發(fā)現(xiàn)利用正則表達(dá)式實(shí)現(xiàn)最為方法,下面這篇文章就主要介紹了Java通過(guò)正則表達(dá)式獲取字符串中數(shù)字的方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下。
    2017-03-03
  • logstash將mysql數(shù)據(jù)同步到elasticsearch方法詳解

    logstash將mysql數(shù)據(jù)同步到elasticsearch方法詳解

    這篇文章主要為大家介紹了logstash將mysql數(shù)據(jù)同步到elasticsearch方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • SpringBoot 3.0 新特性?xún)?nèi)置聲明式HTTP客戶端實(shí)例詳解

    SpringBoot 3.0 新特性?xún)?nèi)置聲明式HTTP客戶端實(shí)例詳解

    聲明式 http 客戶端主旨是使得編寫(xiě) java http 客戶端更容易,為了貫徹這個(gè)理念,采用了通過(guò)處理注解來(lái)自動(dòng)生成請(qǐng)求的方式,本文給大家詳解介紹SpringBoot 聲明式HTTP客戶端相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • SpringBoot整合flyway實(shí)現(xiàn)步驟解析

    SpringBoot整合flyway實(shí)現(xiàn)步驟解析

    這篇文章主要介紹了SpringBoot整合flyway實(shí)現(xiàn)步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java識(shí)別一篇文章中某單詞出現(xiàn)個(gè)數(shù)的方法

    java識(shí)別一篇文章中某單詞出現(xiàn)個(gè)數(shù)的方法

    這篇文章主要介紹了java識(shí)別一篇文章中某單詞出現(xiàn)個(gè)數(shù)的方法,涉及java字符解析操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10

最新評(píng)論

香港 | 平武县| 桃园县| 太仆寺旗| 绵竹市| 白银市| 苍山县| 克拉玛依市| 龙泉市| 神农架林区| 万安县| 拉孜县| 陈巴尔虎旗| 白沙| 枣强县| 井研县| 新巴尔虎右旗| 雷山县| 大方县| 桓仁| 阳泉市| 莆田市| 石渠县| 屏南县| 宜春市| 松阳县| 涿州市| 翼城县| 巴楚县| 呈贡县| 西华县| 丰城市| 延边| 榆中县| 太湖县| 绥芬河市| 鹿泉市| 清远市| 开原市| 广安市| 临清市|