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

Springboot+Easyexcel將數(shù)據(jù)寫(xiě)入模板文件并導(dǎo)出Excel的操作代碼

 更新時(shí)間:2025年05月09日 10:08:41   作者:初夏0811  
這篇文章主要介紹了Springboot+Easyexcel將數(shù)據(jù)寫(xiě)入模板文件并導(dǎo)出Excel的操作代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

一、導(dǎo)入依賴

<!--操作excel工具包-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>3.0.5</version>
</dependency>

話費(fèi)電費(fèi)燃?xì)赓M(fèi)94折充值,加v: sz08111,長(zhǎng)期有效

二、根據(jù)excel表頭創(chuàng)建對(duì)應(yīng)的實(shí)體類Pojo

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class ExcelTitle {
    @ExcelProperty(value="事件名稱", index=0)
    private String eventName;
    @ExcelProperty(value="需求負(fù)責(zé)人", index=1)
    private String prdManager;
    @ExcelProperty(value="技術(shù)負(fù)責(zé)人", index=2)
    private String techManager;
    @ExcelProperty(value="文檔鏈接", index=3)
    private String prdDocs;
    @ExcelProperty(value="數(shù)據(jù)鏈接", index=4)
    private String statsDocs;
    @ExcelProperty(value="統(tǒng)計(jì)口徑", index=5)
    private String reportCaliber;

這里采用了@ExcelProperty的注解,其中value表示列名,index表示列名的索引值。

三、Controller類接收請(qǐng)求

@RequestMapping(value = "/bulkOutput", method = RequestMethod.GET)
    public ResultBean bulkOutput(HttpServletResponse response) {
        // 重要! 設(shè)置返回格式是excel形式
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        // 設(shè)置編碼格式
        response.setCharacterEncoding("utf-8");
        // 設(shè)置URLEncoder.encode 防止中文亂碼
        String fileName = null;
        try {
            fileName = URLEncoder.encode("數(shù)據(jù)批量導(dǎo)出", "UTF-8").replaceAll("\\+", "%20");
        // 設(shè)置響應(yīng)頭
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
        List<ExcelTitle> bulkOutputData = wildEventService.getBulkOutputData();
        // 模板文件保存在springboot項(xiàng)目的resources/static下
        Resource resource = new ClassPathResource("static/數(shù)據(jù)批量導(dǎo)出模板.xlsx");
        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
            							   .withTemplate(resource.getInputStream())	// 利用模板的輸出流
            							   .build();
        // 寫(xiě)入模板文件的第一個(gè)sheet 索引0    
        WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
        // 將數(shù)據(jù)寫(xiě)入到模板文件的對(duì)應(yīng)sheet中
        excelWriter.write(bulkOutputData, writeSheet);
        excelWriter.finish();
        } catch (UnsupportedEncodingException e) {
            return ResultBean.errorService(e.getMessage());
        } catch (IOException e) {
            return ResultBean.errorService(e.getMessage());
        }
        return ResultBean.success("數(shù)據(jù)導(dǎo)出成功!");
    }

上述代碼中,首先對(duì)response進(jìn)行了設(shè)置,設(shè)置了返回類型,響應(yīng)頭,以及導(dǎo)出下載時(shí)的文件名稱。接下來(lái),利用Resource resource = new ClassPathResource(“static/數(shù)據(jù)批量導(dǎo)出模板.xlsx”); 讀取項(xiàng)目下的模板文件,并調(diào)用easyexcel的寫(xiě)入方法。這里write(response.getOutputStream())表示寫(xiě)入response的輸出流,即將文件返回給客戶端進(jìn)行下載。withTemplate(resource.getInputStream())表示讀取模板文件進(jìn)行寫(xiě)入。最后調(diào)用 WriteSheet writeSheet = EasyExcel.writerSheet(0).build();將蘇劇寫(xiě)入模板文件的第一個(gè)sheet中(索引從0開(kāi)始)。

四、Service層獲取待寫(xiě)入數(shù)據(jù)

import com.example.demo.Pojo.ExcelTitle;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class BulkOutputService {
    public List<ExcelTitle> getOutputData()
    {
        List<ExcelTitle> resultList = new ArrayList<>();
        // 第一行數(shù)據(jù)
        ExcelTitle t1 = new ExcelTitle();
        t1.setEventName("測(cè)試數(shù)據(jù)1");
        t1.setTechManager("張三");
        t1.setPrdManager("張三");
        t1.setPrdDocs("http://prdDocs.com");
        t1.setStatsDocs("http://statsDocs.com");
        t1.setReportCaliber("reportCaliber");
        // 第二行數(shù)據(jù)
        ExcelTitle t2 = new ExcelTitle();
        t2.setEventName("測(cè)試數(shù)據(jù)2");
        t2.setTechManager("李四");
        t2.setPrdManager("李四");
        t2.setPrdDocs("http://prdDocs.com");
        t2.setStatsDocs("http://statsDocs.com");
        t2.setReportCaliber("reportCaliber");
        resultList.add(t1);
        resultList.add(t2);
        return resultList;
    }
}

五、效果展示

啟動(dòng)springboot程序,在瀏覽器中輸入請(qǐng)求: http://localhost:8080/bulkOutput,可以發(fā)現(xiàn)返回的excel文件被瀏覽器下載,打開(kāi)后內(nèi)容如下:

可以看到,數(shù)據(jù)根據(jù)模板格式寫(xiě)入了文件,并以excel的形式導(dǎo)出。初步完成了我們預(yù)定的場(chǎng)景。

六、總結(jié)

本次實(shí)現(xiàn)的功能是利用現(xiàn)有模板,將數(shù)據(jù)批量導(dǎo)出成excel,借助于easyexcel來(lái)實(shí)現(xiàn)操作excel的功能。最重要的功能模塊是Controller里的內(nèi)容。

需要注意

  • 需要加上response的響應(yīng)類型和響應(yīng)頭來(lái)使得返回請(qǐng)求返回excel文件
  • 寫(xiě)到Web流時(shí),這里的ContentType和CharacterEncoding不要亂碼,否則很容易亂碼或者文件損壞
  • 使用EasyExcel.withTemplate引入模板的輸入流

到此這篇關(guān)于Springboot+Easyexcel將數(shù)據(jù)寫(xiě)入模板文件并導(dǎo)出Excel的文章就介紹到這了,更多相關(guān)Springboot Easyexcel 導(dǎo)出Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的Runnable,Callable,F(xiàn)uture,F(xiàn)utureTask的比較

    Java中的Runnable,Callable,F(xiàn)uture,F(xiàn)utureTask的比較

    這篇文章主要介紹了Java中的Runnable,Callable,F(xiàn)uture,F(xiàn)utureTask的比較的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • SpringMVC+MyBatis實(shí)現(xiàn)多數(shù)據(jù)源切換

    SpringMVC+MyBatis實(shí)現(xiàn)多數(shù)據(jù)源切換

    在企業(yè)級(jí)應(yīng)用開(kāi)發(fā)中,經(jīng)常需要處理來(lái)自不同數(shù)據(jù)庫(kù)的數(shù)據(jù),為了滿足這一需求,我們可以通過(guò)配置多個(gè)數(shù)據(jù)源來(lái)實(shí)現(xiàn)對(duì)不同數(shù)據(jù)庫(kù)的訪問(wèn),下面我們來(lái)看看具體實(shí)現(xiàn)吧
    2025-01-01
  • java中ThreadLocal的應(yīng)用場(chǎng)景實(shí)例分析

    java中ThreadLocal的應(yīng)用場(chǎng)景實(shí)例分析

    在本篇文章里小編給大家整理的是一篇關(guān)于java中ThreadLocal的應(yīng)用場(chǎng)景實(shí)例分析,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • Springboot中如何使用Redisson實(shí)現(xiàn)分布式鎖淺析

    Springboot中如何使用Redisson實(shí)現(xiàn)分布式鎖淺析

    redisson是redis的java客戶端程序,國(guó)內(nèi)外很多公司都有在用,下面這篇文章主要給大家介紹了關(guān)于Springboot中如何使用Redisson實(shí)現(xiàn)分布式鎖的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Java?設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解簡(jiǎn)單工廠模式

    Java?設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解簡(jiǎn)單工廠模式

    簡(jiǎn)單工廠模式是屬于創(chuàng)建型模式,又叫做靜態(tài)工廠方法(Static Factory Method)模式,但不屬于23種GOF設(shè)計(jì)模式之一。簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。簡(jiǎn)單工廠模式是工廠模式家族中最簡(jiǎn)單實(shí)用的模式,可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)
    2022-03-03
  • 淺談Java中Properties類的詳細(xì)使用

    淺談Java中Properties類的詳細(xì)使用

    properties類繼承自hashtable,通常和io流結(jié)合使用。它最突出的特點(diǎn)是將key/value作為配置屬性寫(xiě)入到配置文件中以實(shí)現(xiàn)配置持久化,或從配置文件中讀取這些屬性。它的這些配置文件的規(guī)范后綴名為".properties"。表示了一個(gè)持久的屬性集
    2021-06-06
  • springboot?vue項(xiàng)目管理前后端實(shí)現(xiàn)編輯功能

    springboot?vue項(xiàng)目管理前后端實(shí)現(xiàn)編輯功能

    這篇文章主要為大家介紹了springboot?vue項(xiàng)目管理前后端實(shí)現(xiàn)編輯功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Spring boot項(xiàng)目打包成jar運(yùn)行的二種方法

    Spring boot項(xiàng)目打包成jar運(yùn)行的二種方法

    這篇文章主要給大家介紹了關(guān)于Spring boot項(xiàng)目打包成jar運(yùn)行的二種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 詳解Java如何利用位操作符創(chuàng)建位掩碼

    詳解Java如何利用位操作符創(chuàng)建位掩碼

    在本文中,我們來(lái)看看如何使用位操作符實(shí)現(xiàn)低級(jí)別的位掩碼。我們將看到我們?nèi)绾螌⒁粋€(gè)單一的int變量作為一個(gè)單獨(dú)的數(shù)據(jù)容器,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • Java 數(shù)據(jù)結(jié)構(gòu)之時(shí)間復(fù)雜度與空間復(fù)雜度詳解

    Java 數(shù)據(jù)結(jié)構(gòu)之時(shí)間復(fù)雜度與空間復(fù)雜度詳解

    算法復(fù)雜度分為時(shí)間復(fù)雜度和空間復(fù)雜度。其作用: 時(shí)間復(fù)雜度是度量算法執(zhí)行的時(shí)間長(zhǎng)短;而空間復(fù)雜度是度量算法所需存儲(chǔ)空間的大小
    2021-11-11

最新評(píng)論

仙居县| 富顺县| 陇西县| 和政县| 阜城县| 玛纳斯县| 芜湖县| 永新县| 阳城县| 嘉禾县| 楚雄市| 神池县| 吉安市| 咸阳市| 尚志市| 南川市| 会宁县| 内丘县| 福安市| 顺昌县| 垦利县| 淮北市| 社旗县| 库尔勒市| 高邮市| 盘山县| 阜新| 清徐县| 中宁县| 大足县| 沂水县| 宁远县| 二连浩特市| 灵宝市| 德州市| 镇原县| 白玉县| 定兴县| 梧州市| 阳信县| 民权县|