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

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

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

一、導(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,長期有效

二、根據(jù)excel表頭創(chuàng)建對應(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類接收請求

@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();
        // 寫入模板文件的第一個sheet 索引0    
        WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
        // 將數(shù)據(jù)寫入到模板文件的對應(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)出成功!");
    }

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

四、Service層獲取待寫入數(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("測試數(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("測試數(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;
    }
}

五、效果展示

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

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

六、總結(jié)

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

需要注意

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

到此這篇關(guān)于Springboot+Easyexcel將數(shù)據(jù)寫入模板文件并導(dǎo)出Excel的文章就介紹到這了,更多相關(guān)Springboot Easyexcel 導(dǎo)出Excel內(nèi)容請搜索腳本之家以前的文章或繼續(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è)級應(yīng)用開發(fā)中,經(jīng)常需要處理來自不同數(shù)據(jù)庫的數(shù)據(jù),為了滿足這一需求,我們可以通過配置多個數(shù)據(jù)源來實(shí)現(xiàn)對不同數(shù)據(jù)庫的訪問,下面我們來看看具體實(shí)現(xiàn)吧
    2025-01-01
  • java中ThreadLocal的應(yīng)用場景實(shí)例分析

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

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

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

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

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

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

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

    properties類繼承自hashtable,通常和io流結(jié)合使用。它最突出的特點(diǎn)是將key/value作為配置屬性寫入到配置文件中以實(shí)現(xiàn)配置持久化,或從配置文件中讀取這些屬性。它的這些配置文件的規(guī)范后綴名為".properties"。表示了一個持久的屬性集
    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)行的二種方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 詳解Java如何利用位操作符創(chuàng)建位掩碼

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

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

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

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

最新評論

柏乡县| 娄烦县| 康平县| 商南县| 米泉市| 定州市| 旬邑县| 贞丰县| 松溪县| 永修县| 临洮县| 依安县| 洛扎县| 津南区| 崇仁县| 闸北区| 石阡县| 天镇县| 五河县| 桓仁| 宁夏| 东平县| 大洼县| 雷州市| 泽普县| 西和县| 历史| 灌南县| 潜山县| 古田县| 湖北省| 上蔡县| 铅山县| 祁门县| 阳曲县| 民勤县| 卢龙县| 施甸县| 永顺县| 怀仁县| 梁平县|