欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用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)依賴

 <!--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 {
        //查詢所有用戶
        List<User> list= userService.list();
        //在內(nèi)存操作,寫到瀏覽器
        ExcelWriter writer= ExcelUtil.getWriter(true);
 
        //自定義標(biāo)題別名
        writer.addHeaderAlias("username","用戶名");
        writer.addHeaderAlias("password","密碼");
        writer.addHeaderAlias("nickname","昵稱");
        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);
//            ****類似一一對(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常用JVM參數(shù)實(shí)戰(zhàn)

    Java常用JVM參數(shù)實(shí)戰(zhàn)

    本文主要介紹了Java常用JVM參數(shù)實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java單例的寫法詳解

    Java單例的寫法詳解

    在java中,單例有很多種寫法,面試時(shí),手寫代碼環(huán)節(jié),除了寫算法題,有時(shí)候也會(huì)讓手寫單例模式,這里記錄一下單例的幾種寫法和優(yōu)缺點(diǎn)。需要的朋友可以參考下
    2021-09-09
  • Kryo框架使用方法代碼示例

    Kryo框架使用方法代碼示例

    這篇文章主要介紹了Kryo框架的相關(guān)內(nèi)容,文中向大家分享了Kryo框架使用方法代碼示例,小編覺(jué)得挺不錯(cuò)的,希望能給大家一個(gè)參考。
    2017-10-10
  • 在SpringBoot中使用YourKit進(jìn)行性能調(diào)優(yōu)的教程詳解

    在SpringBoot中使用YourKit進(jìn)行性能調(diào)優(yōu)的教程詳解

    在應(yīng)用程序的開(kāi)發(fā)過(guò)程中,性能調(diào)優(yōu)是一個(gè)重要的環(huán)節(jié),在SpringBoot應(yīng)用程序中,我們可以使用YourKit來(lái)進(jìn)行性能調(diào)優(yōu),YourKit是一款非常強(qiáng)大的Java性能調(diào)優(yōu)工具,在本文中,我們將介紹如何在 SpringBoot應(yīng)用程序中使用YourKit進(jìn)行性能調(diào)優(yōu)
    2023-06-06
  • java中如何停止一個(gè)正在運(yùn)行的線程

    java中如何停止一個(gè)正在運(yùn)行的線程

    文章介紹了三種停止正在運(yùn)行線程的方法:設(shè)置標(biāo)志位、利用中斷標(biāo)志位和利用InterruptedException異常,這些方法可以幫助我們有效地控制線程的執(zhí)行
    2025-01-01
  • 深入了解JVM(Java虛擬機(jī))內(nèi)存結(jié)構(gòu)

    深入了解JVM(Java虛擬機(jī))內(nèi)存結(jié)構(gòu)

    Java虛擬機(jī)(Java Virtual Machine,JVM)是Java程序的運(yùn)行環(huán)境,它是一個(gè)抽象的計(jì)算機(jī)模型,通過(guò)解釋和執(zhí)行Java字節(jié)碼來(lái)運(yùn)行Java程序,本將大家深入了解JVM(Java虛擬機(jī))內(nèi)存結(jié)構(gòu),需要的朋友可以參考下
    2023-08-08
  • 深入淺析Mybatis與Hibernate的區(qū)別與用途

    深入淺析Mybatis與Hibernate的區(qū)別與用途

    這篇文章主要介紹了Mybatis與Hibernate的區(qū)別與用途的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • Java中驗(yàn)證 Mybatis 數(shù)據(jù)分片可以減輕GC壓力的操作方法

    Java中驗(yàn)證 Mybatis 數(shù)據(jù)分片可以減輕GC壓力的操作方法

    這篇文章主要介紹了Java中驗(yàn)證 Mybatis 數(shù)據(jù)分片可以減輕GC壓力的操作方法,本文使用 Spock(可集成Spring Boot項(xiàng)目) 編寫測(cè)試用例,基于 Groovy (JVM語(yǔ)言),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • java如何判斷時(shí)間段是否交叉重疊

    java如何判斷時(shí)間段是否交叉重疊

    這篇文章主要介紹了java如何判斷時(shí)間段是否交叉重疊問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • IDEA中創(chuàng)建maven項(xiàng)目webapp目錄無(wú)法識(shí)別即未被標(biāo)識(shí)的解決辦法

    IDEA中創(chuàng)建maven項(xiàng)目webapp目錄無(wú)法識(shí)別即未被標(biāo)識(shí)的解決辦法

    在學(xué)習(xí)SpringMVC課程中,基于IDEA新建maven項(xiàng)目模塊后,webapp目錄未被標(biāo)識(shí),即沒(méi)有小藍(lán)點(diǎn)的圖標(biāo)顯示,所以本文給大家介紹了IDEA中創(chuàng)建maven項(xiàng)目webapp目錄無(wú)法識(shí)別即未被標(biāo)識(shí)的解決辦法,需要的朋友可以參考下
    2024-03-03

最新評(píng)論