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

企业网站的设计150m网站空间

企业网站的设计,150m网站空间,免费的行情网站推荐大全,昆明网站推广专员环境 java 1.8 easyexcel 3.1.1 实现方式 自定义WriteHandler,实现AbstractMergeStrategy抽象类,实现merge 方法完成自定义的合并操作。 本测试代码,实现了eques方法,用于判断是否需要合并 核心代码 实现AbstractMergeStrate…

环境

java 1.8
easyexcel 3.1.1

实现方式

自定义WriteHandler,实现AbstractMergeStrategy抽象类,实现merge 方法完成自定义的合并操作。
本测试代码,实现了eques方法,用于判断是否需要合并

核心代码

实现AbstractMergeStrategy类的merge方法进行单元格合并
需要注意的是,单元格需要一次合并完成,合并了以后不能再次合并。所以判断当前对象与前一个对象不相等时,才会对之前的对象进行合并操作


/*** 合并策略* @author dzh* @since 2025/4/17*/
public class MyMergeStrategy extends AbstractMergeStrategy {// 根据数据的下标判断是否需要合并行private final Function<Integer, Boolean> eqBefore;// 根据列序号判断该列列是否需要行合并,从0开始private final Function<Integer, Boolean> columnNeedMerge;public MyMergeStrategy(Function<Integer, Boolean> eqBefore, Function<Integer, Boolean> columnNeedMerge) {this.eqBefore = eqBefore;this.columnNeedMerge = columnNeedMerge;}@Overrideprotected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) {if (relativeRowIndex == null || relativeRowIndex <= 1) {return;}if (!columnNeedMerge.apply(cell.getColumnIndex())) {return;}if (!eqBefore.apply(relativeRowIndex) && eqBefore.apply(relativeRowIndex - 1)) {int endRow = cell.getRowIndex() - 1;int firstRow = getFirstRow(endRow, relativeRowIndex - 1);CellRangeAddress rangeAddress = new CellRangeAddress(firstRow, endRow, cell.getColumnIndex(), cell.getColumnIndex());sheet.addMergedRegion(rangeAddress);}}private int getFirstRow(int rowIndex, int dataIndex) {if (dataIndex == 0) {return rowIndex;}if (this.eqBefore.apply(dataIndex)) {return getFirstRow(rowIndex - 1, dataIndex - 1);}return rowIndex;}
}

测试代码

测试代码中定义的对象覆盖了eques方法,通过该方法判断多个对象如果相等则进行合并操作


import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.google.common.collect.Sets;
import lombok.Data;
import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.Test;
import org.springframework.core.io.ClassPathResource;import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;/*** @author dzh* @since 2023-06-28*/
public class ExportExcelTest {@Testpublic void template() throws IOException {InputStream in = new ClassPathResource("template.xlsx").getInputStream();File out = new File("c://temp/report.xlsx");List<Student> data = data();Function<Integer, Boolean> comp = (i) -> data.get(i - 1).equals(data.get(i));Function<Integer, Boolean> colMerge = (i) -> i < 2;MyMergeStrategy writeHandler = new MyMergeStrategy(comp, colMerge);ExcelWriterBuilder builder = EasyExcel.write(out).withTemplate(in).registerWriteHandler(writeHandler);try (ExcelWriter excelWriter = builder.build()) {WriteSheet writeSheet = EasyExcel.writerSheet().build();FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();excelWriter.fill(data, fillConfig, writeSheet);Map<String, Object> map = new HashMap<>();map.put("tableName", "成绩报表");map.put("total", 886655);excelWriter.fill(map, writeSheet);} finally {in.close();}}@NotNullprivate static List<Student> data() {List<Student> list = new ArrayList<Student>() {{add(new Student("三年级一班", "lucy", "语文", 99));add(new Student("三年级一班", "lucy", "数学", 98));add(new Student("三年级一班", "lucy", "英语", 100));add(new Student("三年级一班", "jack", "语文", 87));add(new Student("三年级二班", "lucy", "语文", 78));add(new Student("三年级二班", "lily", "语文", 97));add(new Student("三年级二班", "lily", "数学", 79));add(new Student("三年级三班", "andy", "语文", 99));}};for (int i = 0; i < list.size(); i++) {Student cur = list.get(i);if (i == 0) {cur.setIndex(1);} else {Student pre = list.get(i - 1);if (pre.equals(cur)) {cur.setIndex(pre.getIndex());} else {cur.setIndex(pre.getIndex() + 1);}}}return list;}@Datastatic class Student {private Integer index;private String clas;private String name;private String subject;private Integer score;public Student(String clas, String name, String subject, Integer score) {this.clas = clas;this.name = name;this.subject = subject;this.score = score;}public boolean equals(Object obj) {Function<Student, Object> con = s -> String.join("-", s.getName(), s.getClas());Object a = con.apply(this);Object b = con.apply((Student) obj);System.out.println(a + "\t" + b);return a.equals(b);}}
}

模板

模板

导出效果

在这里插入图片描述


文章转载自:

http://nLNKMgng.wgtnz.cn
http://yiKimHMb.wgtnz.cn
http://QnoVJ0Nu.wgtnz.cn
http://ez8RSUYg.wgtnz.cn
http://YdU1ngj7.wgtnz.cn
http://7IUMdzG5.wgtnz.cn
http://iTgK1dQ8.wgtnz.cn
http://835WdRJj.wgtnz.cn
http://JqB1tnLd.wgtnz.cn
http://vmYAX4hR.wgtnz.cn
http://73t5xf9V.wgtnz.cn
http://FLtixCoP.wgtnz.cn
http://i2fAeXmQ.wgtnz.cn
http://RmXpAPQ4.wgtnz.cn
http://zWjcLppr.wgtnz.cn
http://yOeNV6HT.wgtnz.cn
http://iTGE0dQl.wgtnz.cn
http://oDOjsQo2.wgtnz.cn
http://9gLblv2U.wgtnz.cn
http://bOVgU3qR.wgtnz.cn
http://jHiwTs53.wgtnz.cn
http://QsJqTjoG.wgtnz.cn
http://N7GsBNxt.wgtnz.cn
http://LJU5h999.wgtnz.cn
http://OUlC2ToC.wgtnz.cn
http://mGMw7uuN.wgtnz.cn
http://faL8QOw1.wgtnz.cn
http://o8wyVK7e.wgtnz.cn
http://mmVxCzsY.wgtnz.cn
http://WB5Sl8ZV.wgtnz.cn
http://www.dtcms.com/wzjs/742853.html

相关文章:

  • 网站 整体架构义乌门户网站建设
  • 长春建设局网站网页设计与制作(第3版)书籍
  • 有什么教做维c甜品的网站河西苏州网站建设
  • 安庆网站建设公司简中铁建设集团有限公司总部在哪
  • 网站建设产品分类网站开发模板下载
  • 丽水北京网站建设自由空间网站建设
  • 南京外贸网站建设案例开发网站网络公司排行
  • 衡阳企业网站建设老铁seo外链工具
  • 嘉峪关网站seo杭州g20网站建设公司
  • 山东省住房和城乡建设厅定额站子网站wordpress软件无法登陆
  • 六站合一的应用场景汕头seo优化流程
  • 网站建设素材图片江津网站建设怎么样
  • 怎么选择合适的网站开发公司阿里云商业网站建设视频
  • 杭州网站建站模板做好宣传信息网推广工作
  • 工行网站如何做理财风险评估wordpress 网易相册
  • 云计算存储网站建设安全佛山网上注册公司流程
  • 教育培训网站模板宁波网络营销外包推广
  • 电子商务网站建设文案公司建站详细步骤
  • 怎么做网站访问被拒绝wordpress天气插件
  • 网站备案需要资料学校网站建设钉钉
  • 公司的网站费怎样做会计分录全国知名十大计算机培训学校
  • 1元建站确定网站风格
  • jsp网站建设作业深圳网站建设小程序
  • 网站建设需求表格桐庐网站制作
  • 网站建设朋友圈广告语个人博客网站备案吗
  • 比较好的源码网站网站备案查询工信部app
  • 3合1网站建设网站前期准备
  • 广州网站设计公司vi设计公司wordpress关键词在哪里
  • 陈晓佳 中信建设有限责任公司优化网站排名茂名厂商
  • 营口化工网站建设百度网盟推广多少钱