当前位置: 首页 > news >正文

免费建站自助建站郑州seo优化外包公司

免费建站自助建站,郑州seo优化外包公司,做网站需要购买网站空间吗,企业管理的五大核心前言:在这里分享自己第一次使用EasyExcel并且编写工具类,且在接口中支持excel文件下载的一系列流程,包含所有前后端(JSJAVA)完整代码,可以根据自己需要自行提取,仅供参考。 一.引入EasyExcel依赖…

前言:在这里分享自己第一次使用EasyExcel并且编写工具类,且在接口中支持excel文件下载的一系列流程,包含所有前后端(JS+JAVA)完整代码,可以根据自己需要自行提取,仅供参考。

一.引入EasyExcel依赖

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version>
</dependency>

二.自定义创建一个实体类,如下,这里使用了lombok

package com.genew.nms.cloud.lm.vo;import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.genew.nms.cloud.lm.config.LocalDateStringConverter;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable;
import java.time.LocalDateTime;/*** @author Salong* @date 2023/5/29 15:38*/@Data
@Accessors(chain = true)
public class UserModel implements Serializable {private static final long serialVersionUID = 1L;@ExcelIgnoreprivate String id;@ExcelProperty(value = "User Name")@ColumnWidth(20)private String userId;@ExcelProperty(value = "User IP")@ColumnWidth(20)private String userIp;@ExcelProperty(value = "Log Time", converter = LocalDateStringConverter.class)@ColumnWidth(20)@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime logTime;}

其中各个注解功能如下:

@ExceIgnore标注的属性,不会被EasyExcel读取识别;

@ExcelProperty(value = "用户名") 被此标记的对象属性,将会显示在‘用户名’的表头下面,此注解还有一个index字段,int类型,从1开始,可以不写,默认按照从上往下的顺序给excel排列。

@ColumnWidth(20) 表示此列的宽度,可以根据内容的长短自定义宽度

需要注意,日期类型的属性,在@ExcelProperty注解中需要额外添加coverter字段

三.编写EasyExcel工具类(这里有两个class,完整代码已贴出,直接复制即可使用)

1.ExcelUtils类

package com.genew.nms.cloud.lm.util;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @author Salong* @date 2022/8/18 10:51*/@Slf4j
public class ExcelUtils {/*** 本地访问* @param fileFullPath 本地完整路径* @param sheets  sheet模板*/public static void writeLocalExcel(String fileFullPath, SheetModel... sheets) {if (null ==sheets || sheets.length==0){log.error("所需参数sheets缺失!");}ExcelWriter excelWriter = EasyExcel.write(fileFullPath).build();List<SheetModel> list = Arrays.asList(sheets);list.forEach(e->{WriteSheet writeSheet = EasyExcel.writerSheet(e.getIndex(), e.getSheetName()).head(e.getClazz()).build();excelWriter.write(e.getData(),writeSheet);});log.info("写入excel成功!");excelWriter.finish();}/**** @param response http请求返回response对象* @param fileName excel文件名* @param excelTypeEnum excel后缀类型(输入ExcelTypeEnum.XLS或者ExcelTypeEnum.XLSX)* @param sheets  sheet表单模板* @throws IOException*/public static void writeWebExcel(HttpServletResponse response, String fileName, ExcelTypeEnum excelTypeEnum, SheetModel... sheets) {if (null ==sheets || sheets.length==0){log.error("所需参数sheets缺失!");}List<SheetModel> list = Arrays.asList(sheets);try {OutputStream outputStream = getOutputStream(response, fileName,excelTypeEnum);ExcelWriter excelWriter = EasyExcel.write(outputStream).build();list.forEach(e->{WriteSheet writeSheet = EasyExcel.writerSheet(e.getIndex(), e.getSheetName()).head(e.getClazz()).build();excelWriter.write(e.getData(),writeSheet);});log.info("写入excel成功!");excelWriter.finish();} catch (IOException e) {log.error("excel导出出失败!", e);// 重置responseresponse.reset();response.setContentType("application/json");response.setCharacterEncoding("utf-8");Map<String, String> map = new HashMap<>();map.put("status", "500");map.put("message", "下载文件失败" + e.getMessage());try {response.getWriter().println(JSON.toJSONString(map));} catch (IOException ex) {log.error("response写入信息失败!",ex);}}}/*** 导出时生成OutputStream*/private static OutputStream getOutputStream(HttpServletResponse response, String fileName,ExcelTypeEnum excelTypeEnum)throws IOException {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码String file = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + file + excelTypeEnum.getValue());return response.getOutputStream();}
}

2.SheetModel类

package com.genew.nms.cloud.lm.util;import lombok.Data;
import lombok.experimental.Accessors;import java.io.Serializable;
import java.util.List;/*** @author Salong* @date 2022/8/18 10:52*/@Data
@Accessors(chain = true)
public class SheetModel<T> implements Serializable {/*** 表单排序(一个Excel的不同的sheet名称不能一样,会覆盖)*/private int index;/*** sheet表单名称(一个Excel的不同的sheet名称不能一样,会覆盖)*/private String sheetName;/*** 表单填充内容*/private List<T> data;/*** 表头数据类型*/private Class<T> clazz;
}

四.使用方法示例

其中下面演示的response为HttpServletResponse对象,可以用于在网络中传输,

本地生成的参考工具类ExcelUtils.writeLocalExcel方法,这里不一一举例。

//1.模拟获取到的数据信息,并且放在List中,这里用UserModel来举例
List<UserModel> users=new ArrayList<>();
//2.新建SheetModel对象(工作表)
SheetModel<UserModel> model = new SheetModel<>();
//3.构建SheetModel对象基本信息(工作表)
model.setData(users)
.setIndex(0)
.setSheetName("user log")
.setClazz(UserModel.class);//其中,model为此excel中的一个工作表,若excel中有多个工作表,可重复构建多个model对象
//但是index不能一样,否则会覆盖内容
SheetModel<UserModel> model01 = new SheetModel<>();
model01 .setData(users)
.setIndex(1)
.setSheetName("user1 log")
.setClazz(UserModel.class);//4.将上面定义的所有工作表写入到excel(上面的名称是工作表名称,这里的名称为excel名称)
ExcelUtils.writeWebExcel(response, "system Log", ExcelTypeEnum.XLS, model,model01);

五.前端接收文件(JS)

//js中定义,需要引入axios
export function cg(config){let url='/api/xxx';return axios.post(url,config,{responseType: 'blob'});
}//vue中使用
cg(config).then((response)=>{const blob = new Blob([response.data], { type: "application/zip" });let url = window.URL.createObjectURL(blob);const link = document.createElement("a"); // 创建a标签link.href = url;link.download = "gc.zip"; // 重命名文件link.click();URL.revokeObjectURL(url); // 释放内存}).catch((err)=>{console.log(err);})   

http://www.fp688.cn/news/154408.html

相关文章:

  • wordpress淘宝客自动采集器百度ocpc怎么优化
  • 个人网站可以做企业宣传友情链接代码
  • 网站后台日志制作一个网站的费用是多少
  • 线上商城简介免费优化网站排名
  • 电脑制作网站的软件深圳网络推广网站
  • 58同城网站推广介绍网络营销的短文
  • 眼科医院网站设计怎么做网络推广怎么做效果好
  • 邵阳企业网站建设互联网营销师培训课程
  • 百度怎么自己做网站长春百度推广电话
  • wordpress密码邮件安卓优化大师官网
  • 惠州最专业的网站建设公司推广网络公司
  • 谁有做那事的网站百度竞价app
  • 有没有专门做京东天猫的人才网站快速申请免费个人网站
  • 微信 网站提成方案点做泉州seo按天计费
  • 有没有教做网站实例视频广州网站建设费用
  • 繁体企业网站源码百度助手
  • 自学html做网站要多久郑州新闻发布
  • 政府网站集群的建设思路东莞疫情最新消息今天中高风险区
  • 网站设计图尺寸淘宝app官方下载
  • 最新廊坊疫情最新消息优化师是做什么的
  • wordpress单屏模板seo是什么简称
  • 杭州外贸建站简单的个人主页网站制作
  • 手机网站用什么做的手机网站智能建站
  • 软件开发和大数据哪个前景好福州seo代理商
  • 计算机网站开发论文参考文献百度seo服务
  • 做网站用哪种编程语言数据分析师资格证书怎么考
  • 深圳做分销商城网站种子搜索引擎在线
  • 酒店类网站开发的策略怎么在网上做推广
  • php做电商网站开题报告百度竞价排名广告定价鲜花
  • 做水果网站特点分析网络域名怎么查