日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

easyexcel注解样式无效_【Java神器】用@ResponseExcel注解将Java List直接转换为Excel文件。不好意思,今晚又可以早点下班了!...

發(fā)布時間:2024/1/23 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 easyexcel注解样式无效_【Java神器】用@ResponseExcel注解将Java List直接转换为Excel文件。不好意思,今晚又可以早点下班了!... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

不要總是重復(fù)造“輪子”

作為朋友,我真的建議你不要重復(fù)造輪子,網(wǎng)上現(xiàn)在很多工具庫都寫很成熟了,拿來就用即可。沒有必要事事躬親,沒有必要事事都自己親自下手去寫代碼。浪費時間,你不是打字員,而且,如果你自己又沒有什么新idea,或者,自己重新寫相同的工具類也沒有什么性能上的提升,就麻煩你還是好好找找輪子吧,沒有必要整天把時間耗在別人已經(jīng)做過的事情上。

web生成Excel需求

相信你做Java這么久了,也或多或少也遇到過一些需要生成Excel報表的需求吧。畢竟辦公軟件還是微軟是天下,Excel對于非編程人員來說,太重要了,可以說是必不可少的。本人工作也遇到過很大需要生成Excel報表的需求,但是,每一次都有一大段重復(fù)的代碼,太冗余了,看起來一點都不簡潔。

那么,有沒有一個工具庫可以最少的代碼就可以完成這項任務(wù)的?或者就用一個注解就OK了呢?
有,而且,就用一個注解就可以。

代碼實操

引入庫

?<dependency>
?????<groupId>com.gaoicegroupId>
?????<artifactId>easyexcel-spring-boot-starterartifactId>
?????<version>1.0version>
?dependency>

在springboot的配置文件application.properties上加上一行:

#?是否解析帶有?@ResponseExcel?注解的函數(shù)的返回值為文件下載
com.gaoice.easyexcel.enable-response-excel=true

看清楚,加上@ResponseExcel注解,而不是 @ResponseBody注解,看清楚了哦!!!

????@RequestMapping("/downloadExcel")
????@ResponseExcel(fileName="Java知識日歷20201101測試",sheetName?=?"同一班的同學(xué)名冊",columnNames=?{"學(xué)生姓名","學(xué)號","年齡"},classFieldNames?=?{?"name","stuNo","age"?})
????public?List?list()?{
????????return?getStudents();
????}

沒錯!就這么簡單,就一個注解,就一個注解,就一個注解。

只要加上@ResponseExcel就可以了,看看想一想,我們節(jié)省了多少開發(fā)時間,節(jié)省了多少代碼。

測試截圖

就這?
No!還可以更加復(fù)雜一點

這個工具庫還提供了可以定制特殊需求方案,也是非常簡單。你可以使用工具庫里面的Model對象組合你的Excel 分別是:SheetInfo ?和 ExcelFile 對象,可以讓你靈活組合你的Excel,真的減少了很多冗余的代碼。

這兩個對象的用法,在文中最后的全部代碼里面都有例子。放心哈!

全部代碼

pom.xml

?<dependency>
?????<groupId>com.gaoicegroupId>
?????<artifactId>easyexcel-spring-boot-starterartifactId>
?????<version>1.0version>
?dependency>

application.properties

#############Java知識日歷 微信公眾號 測試專用###########


# 是否解析 ExcelFile 類型的返回值為文件下載
com.gaoice.easyexcel.enable-excel-file=true
# 是否解析 SheetInfo 類型的返回值為文件下載
com.gaoice.easyexcel.enable-sheet-info=true
# 是否解析帶有 @ResponseExcel 注解的函數(shù)的返回值為文件下載
com.gaoice.easyexcel.enable-response-excel=true

Student.java ?(Model類)

package?com.nh.modules.test.model;
/**
?*?@author?Java知識日歷??
?*/
public?class?Student?{
???private?String?name;
???private?String?stuNo;
???private?int?age;
???
???private?ClassTeacher?classTeacher;//該學(xué)生的班主任
?public?String?getName()?{
??return?name;
?}
?public?void?setName(String?name)?{
??this.name?=?name;
?}
?public?String?getStuNo()?{
??return?stuNo;
?}
?public?void?setStuNo(String?stuNo)?{
??this.stuNo?=?stuNo;
?}
?public?int?getAge()?{
??return?age;
?}
?public?void?setAge(int?age)?{
??this.age?=?age;
?}
?public?ClassTeacher?getClassTeacher()?{
??return?classTeacher;
?}
?public?void?setClassTeacher(ClassTeacher?classTeacher)?{
??this.classTeacher?=?classTeacher;
?}?
}

ClassTeacher.java ?(Model類)

package?com.nh.modules.test.model;
/**
?*?@author?Java知識日歷??
?*/
public?class?ClassTeacher?{
???private?String?name;

?public?String?getName()?{
??return?name;
?}
?
?public?void?setName(String?name)?{
??this.name?=?name;
?}
???
}

TestController.java

package?com.nh.modules.test.controllers;


import?java.util.ArrayList;
import?java.util.List;

import?org.springframework.stereotype.Controller;
import?org.springframework.web.bind.annotation.RequestMapping;

import?com.gaoice.easyexcel.SheetInfo;
import?com.gaoice.easyexcel.spring.boot.autoconfigure.ExcelFile;
import?com.gaoice.easyexcel.spring.boot.autoconfigure.annotation.ResponseExcel;
import?com.nh.modules.test.model.ClassTeacher;
import?com.nh.modules.test.model.Student;

/**
?*?@author?Java知識日歷??
?*?
?*?在?Controller?上使用?@RestController?或者?@ResponseBody?會導(dǎo)致?starter?失效
?*/
@Controller
@RequestMapping("/test")
public?class?TestController?{
?

????/**
?????*?注解?@ResponseExcel?的必須值:classFieldNames
?????*?sheetName?默認(rèn)值為?default
?????*?fileName?默認(rèn)使用?sheetName?的值
?????*?columnNames?默認(rèn)使用?classFieldNames?的值
?????*?sheetStyle?可以指定樣式,默認(rèn)為?DefaultSheetStyle.class
?????*?生效條件:
?????*?enable-response-excel=true
?????*?使用?@ResponseExcel?注解
?????*?不使用?@ResponseBody?注解
?????*
?????*?@return?List
?????*/
????@RequestMapping("/downloadExcel")
????@ResponseExcel(fileName="Java知識日歷20201101測試",sheetName?=?"同一班的同學(xué)名冊",columnNames=?{"學(xué)生姓名","學(xué)號","年齡"},classFieldNames?=?{?"name","stuNo","age"?})
????public?List?list()?{
????????return?getStudents();
????}

????/**
?????*?生成測試數(shù)據(jù)
?????*
?????*?@return?List
?????*/
????private?List?getStudents()?{
????????List?list?=?new?ArrayList();
????????Student?stu?=?new?Student();
?????stu.setName("Java知識日歷");
?????stu.setAge(3);
?????stu.setStuNo("A0001");
?????ClassTeacher?classTeacher?=?new?ClassTeacher();
?????classTeacher.setName("Java課老師");
?????stu.setClassTeacher(classTeacher);
?????list.add(stu);for(int?i?=?0;i<10;i++)?{
?????????Student?testStu?=?new?Student();
?????????testStu.setName("小明"+i+"號"?);
?????????testStu.setAge(6+i);
?????????testStu.setStuNo("A000"+(i+2));
?????????ClassTeacher?classTeacher1?=?new?ClassTeacher();
?????????classTeacher1.setName((i+1)+"課老師");
?????????testStu.setClassTeacher(classTeacher1);
?????????list.add(testStu);
????????}return?list;
????}/***其他特殊需要定制的需求。可以靈活組合,滿足你個性定制的需求***//**
?????*?文件名默認(rèn)使用?sheetName
?????*?生效條件:
?????*?enable-sheet-info=true
?????*?返回值類型為?SheetInfo
?????*?不使用?@ResponseBody?注解
?????*
?????*?@return?SheetInfo
?????*/@RequestMapping("/sheetInfo")public?SheetInfo?sheetInfo()?{
????????String?sheetName?=?"靈活組合測試";
????????String[]?columnNames?=?{"學(xué)生姓名",?"學(xué)號",?"年齡"};
????????String[]?classFieldNames?=?{"name",?"stuNo",?"age"};
????????List?data?=?getStudents();return?new?SheetInfo(sheetName,?columnNames,?classFieldNames,?data);
????}/**
?????*?生效條件:
?????*?enable-excel-file=true
?????*?返回值類型為?ExcelFile
?????*?不使用?@ResponseBody?注解
?????*
?????*?@return?ExcelFile
?????*/@RequestMapping("/excelFile")public?ExcelFile?excelFile()?{/*?SheetInfo?*/
????????String?sheetName?=?"靈活組合測試Sheet1";
????????String[]?columnNames?=?{"學(xué)生姓名",?"學(xué)號",?"年齡"};
????????String[]?classFieldNames?=?{"name",?"stuNo",?"age"};
????????List?data?=?getStudents();
????????SheetInfo?sheetInfo1?=?new?SheetInfo(sheetName,?columnNames,?classFieldNames,?data);
????????String?sheetName2?=?"靈活組合測試Sheet2";
????????String[]?columnNames2?=?{"學(xué)生姓名",?"學(xué)號",?"年齡","班主任姓名"};
????????String[]?classFieldNames2?=?{"name",?"stuNo",?"age","classTeacher.name"};
????????SheetInfo?sheetInfo2?=?new?SheetInfo(sheetName2,?columnNames2,?classFieldNames2,?data);/*?通過?ExcelFile?自定義下載的文件名,放入多個?sheet?*/
????????ExcelFile?excelFile?=?new?ExcelFile();
????????excelFile.setFileName("ExcelFile可以自定義文件名和放入多個sheet");
????????excelFile.addSheet(sheetInfo1);
????????excelFile.addSheet(sheetInfo2);return?excelFile;
????}
}

上面的TestController.java全部測試結(jié)果截圖

ExcelFile對象生成的定制版Excel

SheetInfo對象生成的定制版Excel

使用@ResponseExcel注解的普通Excel

作者寄語

有興趣的朋友可以copy我的代碼測試一下,就可以發(fā)現(xiàn)使用一個注解 @ResponseExcel 就解決生成Excel的問題了,少了很多冗余代碼,簡潔了很多,看起來心情好多了。

原創(chuàng)不易啊!希望大家多多支持哈,后面會有更多更好的原創(chuàng)文章分享給大家的。希望大家能給我點個贊支持一下我,最好還點亮小花花(“在看”)啦。謝謝。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的easyexcel注解样式无效_【Java神器】用@ResponseExcel注解将Java List直接转换为Excel文件。不好意思,今晚又可以早点下班了!...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99久久久久久久久 | 毛片毛片| 有码视频在线观看 | 亚洲第一av在线 | 天天操网| 黄网站在线观看视频 | 视频在线一区二区 | 亚洲av无码专区在线电影 | 亚洲精品国产av | 成年人视频在线观看免费 | 99热偷拍| 18性xxxxx性猛交 | 日韩福利影院 | 日本久草视频 | 免费69视频 | 白嫩初高中害羞小美女 | 操你妹影院 | 爱爱视频在线看 | 激情五月综合色婷婷一区二区 | 激情三级在线 | 日本a视频| 91网站在线免费观看 | 五月婷婷在线观看视频 | av五月天在线 | 光棍影院一区二区 | 成人性生活视频 | 天天看天天摸天天操 | 97精品在线视频 | 999毛片| 成人性视频网 | 毛片高清 | 在线观看aaa| 欧美大奶在线 | 亚洲天堂美女 | 最新av不卡 | 欧美亚洲第一页 | 玩弄人妻少妇500系列 | 久久精品视频16 | 精品视频在线观看 | 久久久看| 91av观看| 国产精品有限公司 | 久久久久久久久久久99 | www狠狠操| 久久成人免费电影 | av一区二区免费 | 国产精品亚洲视频 | 黄色片网战 | 男人的天堂日韩 | 最新国产在线视频 | 午夜视频在线观看一区二区 | 久久久999国产精品 天堂av中文在线 | 青青草综合 | 日韩视频免费观看高清 | 欧美成人一区二区三区 | 色射影院 | 日本免费福利视频 | 在线观看免费高清在线观看 | 日本免费在线视频 | 中文字幕精品一二三四五六七八 | 热久久在线 | 91av中文字幕 | 黄色av网站在线观看 | 日韩丰满少妇无码内射 | 一区二区三区视频在线观看 | 久久综合伊人 | 性欧美hd调教 | 中文字幕最新在线 | 日韩一区二区三区视频在线 | 在线观看av中文字幕 | 伊人网在线 | 国产美女精品视频国产 | 欧美人妖乱大交 | 麻豆久久久久 | 茄子视频懂你更多在线观看 | www色中色| 免费在线播放毛片 | 午夜免费在线 | 四虎永久在线观看 | 日本不卡一区二区三区在线观看 | 污污网站在线 | 国产精品人人爽 | 在线视频 91| 亚洲丝袜天堂 | 久久精品免费网站 | 久久精选 | 香蕉a| 免费黄色av网站 | 日韩精品一区在线播放 | 精品国产成人av在线免 | 禁果av一区二区三区 | 污视频网站免费看 | 三点尽露的大尺度国产 | 99热在线只有精品 | 麻豆影视在线播放 | 夫妻性生活黄色片 | 久久6| 国产福利91精品 | 三级福利 |