SpringBoot+easypoi實(shí)現(xiàn)數(shù)據(jù)的Excel導(dǎo)出
本文實(shí)例為大家分享了SpringBoot+easypoi實(shí)現(xiàn)數(shù)據(jù)的Excel導(dǎo)出的具體代碼,供大家參考,具體內(nèi)容如下
maven
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.1.0</version>
</dependency>
Controller層
// 接口不需要返回值
@RequestMapping(value = "/export-activity-data")
public void exportActivityData(@RequestParam String activityType,
@RequestParam String activityState,
@RequestParam String queryValue,
@RequestParam String levelValue,
@RequestParam String startTime,
@RequestParam String endTime, HttpServletResponse response) {
try {
manageService.exportActivityData(TFActivityQueryParam.builder()
.activityState(activityState)
.activityType(activityType)
.queryValue(queryValue)
.levelValue(levelValue)
.startTime("".equals(endTime) ? null : new Date(DateTime.parse(startTime).getMillis()))
.endTime("".equals(endTime) ? null : new Date(DateTime.parse(endTime).getMillis())).build(), response);
} catch (IOException e) {
log.info( "導(dǎo)出失敗", e);
}
}
service層
public void exportActivityData(TFActivityQueryParam param, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("活動(dòng)綜合數(shù)據(jù).xls", "UTF-8"));
val out = response.getOutputStream();
List<TFActivityQueryResult> tfActivityList = getTFActivityList(param);
List<TFActivityQueryResultExportDto> exportDtoList = new ArrayList<>();
tfActivityList.forEach(activity -> {
TFActivityQueryResultExportDto convert = TFActivityQueryResultExportDto.convert(activity);
if (activity.getLevelType().equals("0")) {
convert.setAffiliation("云南省");
} else {
EparchyCode eparchyCode = getEparchyCodeList().stream()
.filter(code -> code.getEparchyCode().equals(activity.getEparchyCode()))
.collect(Collectors.toList()).get(0);
convert.setAffiliation(eparchyCode.getEparchyShortName());
}
exportDtoList.add(convert);
});
Workbook workbook = ExcelExportUtil.exportExcel(
new ExportParams("活動(dòng)綜合數(shù)據(jù)", "活動(dòng)"), TFActivityQueryResultExportDto.class, exportDtoList);
log.info("workbook: {}", workbook);
workbook.write(out);
out.close();
}
數(shù)據(jù)bean
public class TFActivityQueryResultExportDto {
@Excel(name = "活動(dòng)編碼", width = 20)
private String activityCode;
@Excel(name = "活動(dòng)名稱(chēng)", width = 20)
private String activityName;
@Excel(name = "活動(dòng)標(biāo)題", width = 20)
private String activityTitle;
@Excel(name = "歸屬", width = 20)
private String affiliation;
@Excel(name = "活動(dòng)類(lèi)型", width = 20)
private String activityType;
@Excel(name = "活動(dòng)時(shí)間", width = 30)
private String activityTime;
@Excel(name = "活動(dòng)狀態(tài)", width = 20)
private String activityState;
@Excel(name = "備注", width = 30)
private String remark;
@Excel(name = "創(chuàng)建時(shí)間", width = 30)
private String timeCreate;
@Excel(name = "最新操作人", width = 30)
private String operatorName;
@Excel(name = "更新時(shí)間", width = 30)
private String timeUpdate;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java自定義一個(gè)變長(zhǎng)數(shù)組的思路與代碼
有時(shí)我們希望將把數(shù)據(jù)保存在單個(gè)連續(xù)的數(shù)組中,以便快速、便捷地訪問(wèn)數(shù)據(jù),但這需要調(diào)整數(shù)組大小或者對(duì)其擴(kuò)展,下面這篇文章主要給大家介紹了關(guān)于Java自定義一個(gè)變長(zhǎng)數(shù)組的思路與代碼,需要的朋友可以參考下2022-12-12
JAVA中List.addAll的基本語(yǔ)法與用法詳解
這篇文章主要給大家介紹了關(guān)于JAVA中List.addAll的基本語(yǔ)法與用法的相關(guān)資料,需要的朋友可以參考下2024-06-06
Java實(shí)戰(zhàn)之實(shí)現(xiàn)一個(gè)好用的MybatisPlus代碼生成器
這篇文章主要介紹了Java實(shí)戰(zhàn)之實(shí)現(xiàn)一個(gè)好用的MybatisPlus代碼生成器,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
hibernate 命名查詢?nèi)绾螌?shí)現(xiàn)
Hibernate允許在映射文件中定義字符串形式的查詢語(yǔ)句,這種查詢方式成為命名查詢,需要的朋友可以參考下2012-11-11
淺談Java異常的Exception e中的egetMessage()和toString()方法的區(qū)別
下面小編就為大家?guī)?lái)一篇淺談Java異常的Exception e中的egetMessage()和toString()方法的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
Spring Boot監(jiān)聽(tīng)Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例
這篇文章主要介紹了Spring Boot監(jiān)聽(tīng)Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
java中靜態(tài)代碼塊與構(gòu)造方法的執(zhí)行順序判斷
對(duì)靜態(tài)代碼塊以及構(gòu)造函數(shù)的執(zhí)行先后順序,一直很迷惑,直到最近看到一段代碼,發(fā)現(xiàn)終于弄懂了,所以這篇文章主要給大家介紹了關(guān)于如何判斷java中靜態(tài)代碼塊與構(gòu)造方法的執(zhí)行順序的相關(guān)資料,需要的朋友可以參考下。2017-12-12
Java初學(xué)者入門(mén)之繼承和多態(tài)
Java 面向?qū)ο缶幊逃腥筇匦裕悍庋b、繼承、多態(tài),學(xué)好繼承和多態(tài)是面向?qū)ο箝_(kāi)發(fā)語(yǔ)言中非常重要的一個(gè)環(huán)節(jié),這篇文章主要給大家介紹了關(guān)于Java初學(xué)者入門(mén)之繼承和多態(tài)的相關(guān)資料,需要的朋友可以參考下2021-07-07
java 與testng利用XML做數(shù)據(jù)源的數(shù)據(jù)驅(qū)動(dòng)示例詳解
這篇文章主要介紹了java 與testng利用XML做數(shù)據(jù)源的數(shù)據(jù)驅(qū)動(dòng)示例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01

