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

easypoi 导出Excel 使用总结

easypoi 导出Excel

导出Excel需要设置标题,且标题是多行,标题下面是列表头

设置表格标题

 ExportParams headExportParams = new ExportParams();StringBuilder buffer = new StringBuilder("");buffer.append("1、课程名称:......\n").append("2、课程标签:......\n").append("5、适用人群:......");headExportParams.setTitle(buffer.toString());headExportParams.setTitleHeight((short) 50);

设置标题样式

headExportParams.setStyle(MyExcelExportStyler.class);

完整代码如下

@Override
@Async
public void downloadCoursewareDataAsync(List<Long> ids, FileDownloadHistory history, String sheetName) {try {history.setExportStatus(1);List<CoursewareManagement> list = coursewareManagementMapper.queryCoursewareByIdList(ids);List<CoursewareManagementDto> voList = new ArrayList<>();// 创建参数对象(用来设定excel得sheet得内容等信息)ExportParams headExportParams = new ExportParams();StringBuilder buffer = new StringBuilder("");buffer.append("1、课程名称:......,不允许重名\n").append("2、课程标签:多个标签用 、 隔开\n").append("5、适用人群-岗位:......");headExportParams.setTitle(buffer.toString());headExportParams.setTitleHeight((short) 50);headExportParams.setStyle(MyExcelExportStyler.class);// 设置sheet得名称headExportParams.setSheetName(sheetName);// 创建sheet1使用得mapMap<String, Object> headExportMap = new HashMap<>();// title的参数为ExportParams类型,目前仅仅在ExportParams中设置了sheetNameheadExportMap.put("title", headExportParams);// 模版导出对应得实体类型headExportMap.put("entity", CoursewareManagementDto.class);// sheet中要填充得数据headExportMap.put("data", voList);// 将sheet1、sheet2、sheet3使用得map进行包装List<Map<String, Object>> sheetsList = new ArrayList<>();sheetsList.add(headExportMap);try (Workbook workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF);FileOutputStream outputStream = new FileOutputStream(history.getFilePath());) {workbook.write(outputStream);} catch (Exception e) {throw e;}} catch (Exception e) {log.error("课件管理异步下载接口==>{}", e.getLocalizedMessage(), e);history.setExportStatus(0);}history.setModifyTime(new Date());fileDownloadHistoryMapper.updateByPrimaryKeySelective(history);
}public class MyExcelExportStyler extends ExcelExportStylerDefaultImpl {public MyExcelExportStyler(Workbook workbook) {super(workbook);}/*** <p>* 设置表格标题样式* </p>*/@Overridepublic CellStyle getHeaderStyle(short color) {CellStyle titleStyle = workbook.createCellStyle();Font font = workbook.createFont();font.setFontHeightInPoints((short) 12);titleStyle.setFont(font);titleStyle.setWrapText(true);titleStyle.setAlignment(HorizontalAlignment.LEFT);titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);return titleStyle;}
}

源码里的 Excel 导出基本注释很重要,特别是按实体类导出的时候

可以看下这个类 cn.afterturn.easypoi.excel.annotation.Excel

@Excel needMerge 和 @ExcelCollection 配合使用,处理 Excel 一对多的关系

@Data
public class CoursewareManagementVo implements IExcelModel, IExcelDataModel {@Excel(name = "课件名称", needMerge = true, width = 25, orderNum = "1")private String coursewareName;@Excel(name = "课件格式", needMerge = true, width = 25, orderNum = "2")private String coursewareFormat;@Excel(name = "创建时间", needMerge = true, width = 25, orderNum = "3", format = "yyyy-MM-dd HH:mm:ss")private Date createTime;@Excel(name = "课程条线", needMerge = true, width = 25, orderNum = "4")private String classifyName;@ExcelCollection(name = "", orderNum = "5")private List<ColumnVo> columnVos;private String errorMsg;private Integer rowNum;@Overridepublic Integer getRowNum() {return rowNum;}@Overridepublic void setRowNum(Integer integer) {this.rowNum = integer;}@Overridepublic String getErrorMsg() {return errorMsg;}@Overridepublic void setErrorMsg(String s) {this.errorMsg = s;}}
http://www.lryc.cn/news/219109.html

相关文章:

  • MySQL性能优化的最佳20条经验
  • 【Liunx基础】之指令(一)
  • jQuery案例专题
  • 【Linux】服务器间免登陆访问
  • 【信息安全原理】——IP及路由安全(学习笔记)
  • 【jvm】虚拟机之本地方法栈
  • 『CV学习笔记』图像超分辨率等图像处理任务中的评价指标PSNR(峰值信噪比)
  • 【51nod 连续区间】 题解(序列分治)
  • 10.30校招 实习 内推 面经
  • 相比typescript,python的动态类型有什么优缺点?
  • 高效处理文件:批量顺序编号重命名方法
  • JAVA深化篇_29—— 线程使用之线程联合以及Thread类中的其他常用方法【附有详细说明及代码案例】
  • 〖Python网络爬虫实战㊲〗- JavaScript 逆向实战(一)
  • 2023辽宁省数学建模A题铁路车站的安全标线完整原创论文详细讲解(含matlab代码)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • Leetcode-1 两数之和
  • Screens for Mac 中文版 远程桌面连接控制工具
  • 解决vmware安装ubuntu虚拟机显示不全以及无法实现windows与虚拟机之间无法相互复制粘贴问题
  • 希腊字母读音表
  • 如何使用CodeceptJS、Playwright和GitHub Actions构建端到端测试流水线
  • 解析python爬取Ebay数据的方式
  • 设置DevC++支持c++11标准
  • 腾讯云服务器CVM详细介绍_优缺点亲自整理
  • 06_es分布式搜索引擎2
  • 【3D图像分割】基于 Pytorch 的 VNet 3D 图像分割3(3D UNet 模型篇)
  • 【源码解析】Spring Bean定义常见错误
  • 由于找不到vcruntime140.dll无法继续执行代码
  • Perl安装教程
  • Docker数据卷使用过程中想到的几个问题
  • Angular 中的路由