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

网站建设的工作视频人的吗网站建设策划公司

网站建设的工作视频人的吗,网站建设策划公司,中国建设招标网上查询,施工企业oa办公系统起因: 最近需要用到excel导出功能,使用EasyExcel可以快速实现导出,又需要优雅的对EasyExcel进行封装,在实现自己的导出功能时又可以制定一定的规则,让其他同事方便使用,最近研究了下网上的常规写法,站在巨人的肩上重新添加了自己的思路,供大家参考,有任何问题请多指教…

起因:

最近需要用到excel导出功能,使用EasyExcel可以快速实现导出,又需要优雅的对EasyExcel进行封装,在实现自己的导出功能时又可以制定一定的规则,让其他同事方便使用,最近研究了下网上的常规写法,站在巨人的肩上重新添加了自己的思路,供大家参考,有任何问题请多指教

痛点:

1、导出代码写在业务中,调用不统一且代码层次混乱
2、数据库查询的数据远多于对象中定义的数据,导出时默认导出了不想要的数据
3、相同的对象,在导出时需要根据不同条件进行设置不同的Excel表头字段,又不想定义多个导出对象
4、导出时如果设置过某个属性的表头宽度,优先按照设置的宽度导出,如果未设置,希望表头宽度有个默认值,而不是挤压在一起
5、excel需要导出大数据,都在一个sheet页中查看卡顿
6、导出的数据是数据库字符,查看excel人员看不懂,需要做数据转化

如果你有以上痛点问题,可以继续啦;如果没有也可以看看我的封装思路,还请各位高手不吝赐教,这里非常感谢 雪孤城的这篇文章 给了我很大的启发和参考

1. 工具类

1.1 EasyExcelUtil封装类

package cn.well.cloud.core.util.excel;import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;/*** @Description: Easyexcel工具类封装及表格自动列宽设置* @Author: jiawei* @Date: 2023/7/26*/
@Slf4j
public class EasyExcelUtil {/*** 每个sheet的容量,即超过60000时就会把数据分sheet*/private static final int PAGE_SIZE = 60000;/*** 无过滤字段的导出excel* @param data 需要导出的数据集* @param fileName 需要导出的excel名* @param excelClass 需要导出的excel表头实体* @return* @author jiawei* @since 2023/7/27 下午1:39*/public static void exportByExcel(List<?> data, String fileName, Class<?> excelClass){exportByExcel(data, fileName, excelClass, AbstractEasyExcel.getExcludeColumnFieldNames());}/***  自定义过滤字段的导出excel* @param data 需要导出的数据集* @param fileName 需要导出的excel名* @param excelClass 需要导出的excel表头实体* @param excludeColumnFieldNames 需要过滤的字段集合* @return * @author jiawei* @since 2023/7/27 下午1:41*/public static void exportByExcel(List<?> data, String fileName, Class<?> excelClass, Collection<String> excludeColumnFieldNames){try {ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletResponse response = servletRequestAttributes.getResponse();long exportStartTime = System.currentTimeMillis();;log.info("报表导出Size: " + data.size() + "条。");// 把查询到的数据按设置的sheet的容量进行切割List<? extends List<?>> lists = SplitList.splitList(data, PAGE_SIZE);// 设置响应头AbstractEasyExcel.setHead(response, fileName + DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN));// 浏览器访问url直接下载文件的方式ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), excelClass).registerWriteHandler(AbstractEasyExcel.formatExcel()).registerWriteHandler(new AbstractEasyExcel.ExcelWidthStyleStrategy()).includeColumnFieldNames(AbstractEasyExcel.getIncludeColumnFiledNames(excelClass)).excludeColumnFieldNames(excludeColumnFieldNames).build();ExcelWriterSheetBuilder excelWriterSheetBuilder;WriteSheet writeSheet;if(ObjectUtil.hasNull(lists)){log.info("未查询到要导出的数据,导出终止");return;}for (int i = 1; i <= lists.size(); ++i) {excelWriterSheetBuilder = new ExcelWriterSheetBuilder(excelWriter);excelWriterSheetBuilder.sheetNo(i).sheetName("sheet" + i);writeSheet = excelWriterSheetBuilder.build();excelWriter.write(lists.get(i - 1), writeSheet);}// 必须要finish才会写入,不finish只会创建empty的文件excelWriter.finish();log.info("报表导出结束时间:" + new Date() + ";导出耗时: " + (System.currentTimeMillis() - exportStartTime) + "ms");} catch (IOException e) {e.printStackTrace();}}
}

1.2AbstractEasyExcel EasyExcel的基础封装,包含响应头设置,Excel的格式设置,根据实体设置需要导出的字段,设置需要过滤的实体中字段(字符串模式和lambda表达获取get方法引用的属性+连续方法调用模式),设置头部单元格宽度
AbstractEasyExcel

package cn.well.cloud.core.util.excel;import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import 
http://www.yayakq.cn/news/35864/

相关文章:

  • 青州网站建设qzfuwu绵阳做网站的有哪些
  • 协会网站建设方案书七牛云可以做网站的存储空间吗
  • 合肥公司建设网站做互联网营销一般上什么网站
  • 太原建设北路小学网站百度百科网站怎么做
  • 网站平台搭建要多少钱重庆旅游攻略详细安排
  • 国外有名的设计网站z怎么建设视频网站
  • 哈尔滨做网站收费中国建设很行河北省分行合作网站
  • tp5企业网站开发视频宁津华企动力做网站的电话多少
  • 建造网站需要什么场口一站式建站哪家公司好
  • 北京安慧桥网站建设世界500强排名
  • 关于电视剧的网站设计网页自己做的网站打不开了
  • 招聘网站怎么做吸引人智能网站建设推荐
  • 网站建设在哪里进行心理咨询在线免费咨询
  • 外贸网站建设规划做坏事小视频网站
  • 高端的网站优化公司全网营销网站建设
  • pc网站建设费用湖北网络广播电视台
  • 校园二手交易网站值得做吗wordpress .po文件
  • 做平面的就一定要做网站吗优化大师官方正版下载
  • 星光影视园网站建设案例网站建设 英语词汇
  • 免费网站程序做宠物店网站的素材
  • 教育培训网站案例蚂蚁建站
  • 成都门户网站建设公司品牌设计师工资一般多少
  • 网站建设银行业务预约纪念币猪年纪念币预约国内知名公关公司
  • 企业手机网站制作下载百度搜索
  • 吉安律师网站建设购物网站的详细设计
  • 海淀团队组建网站优化网站的公司哪家好
  • 做产品网站需要注意网站设计制作规范
  • 怎么在网上建网站哪些网上订餐的网站做的好
  • 上海做一个公司网站多少钱it软件开发
  • 健康养生网站源码网站建设需要哪些信息