easypoi——Excel表自定义模板样式(简单丝滑)
创始人
2024-02-09 14:30:34
0

文章目录

  • 问题
  • 实战
    • 工具类
    • ExcelExportStylerUtil类——实现自由调样式
  • 总结


问题

上一篇文章只使用简单的注解、无法改变字体大小、颜色,单元格颜色、边框问题。

实战

工具类

比上一次只多了一行代码,ExcelExportStylerUtil类只是为了自由实现我们想要的样式。

/*** 导出Excel加边框样式*/public static void exportNewExcel(List list, String title, String sheetName, Class entity, String fileName, HttpServletResponse response) {ExportParams exportParams = new ExportParams(title, sheetName);//添加样式exportParams.setStyle(ExcelExportStylerUtil.class);//冻结表头exportParams.setCreateHeadRows(true);Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entity, list);if (workbook == null) {throw new RuntimeException("Excel表导出失败");}OutputStream outputStream = null;BufferedOutputStream buffOutputStream = null;try {// 指定下载的文件名--设置响应头response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");//response.setContentType("application/vnd.ms-excel;charset=UTF-8");response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);response.setCharacterEncoding("UTF-8");// 导出ExceloutputStream = response.getOutputStream();buffOutputStream = new BufferedOutputStream(outputStream);workbook.write(buffOutputStream);buffOutputStream.flush();} catch (Exception e) {e.printStackTrace();} finally {try {if (outputStream != null) {outputStream.close();}if (buffOutputStream != null) {buffOutputStream.close();}if (workbook != null) {workbook.close();}} catch (Exception e) {e.printStackTrace();}}}

ExcelExportStylerUtil类——实现自由调样式


import cn.afterturn.easypoi.excel.export.styler.AbstractExcelExportStyler;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
import org.apache.poi.ss.usermodel.*;public class ExcelExportStylerUtil extends AbstractExcelExportStyler implements IExcelExportStyler {public ExcelExportStylerUtil(Workbook workbook) {super.createStyles(workbook);}@Overridepublic CellStyle getHeaderStyle(short headerColor) {CellStyle titleStyle = workbook.createCellStyle();Font font = workbook.createFont();font.setFontHeightInPoints((short) 12);titleStyle.setFont(font);titleStyle.setAlignment(HorizontalAlignment.CENTER);         // 水平居中titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);   // 上下居中titleStyle.setBorderBottom(BorderStyle.THIN); //下边框titleStyle.setBorderLeft(BorderStyle.THIN);//左边框titleStyle.setBorderTop(BorderStyle.THIN);//上边框titleStyle.setBorderRight(BorderStyle.THIN);//右边框return titleStyle;}@Overridepublic CellStyle getTitleStyle(short color) {CellStyle titleStyle = workbook.createCellStyle();titleStyle.setAlignment(HorizontalAlignment.CENTER);         // 水平居中titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);   // 上下居中titleStyle.setBorderBottom(BorderStyle.THIN); //下边框titleStyle.setBorderLeft(BorderStyle.THIN);//左边框titleStyle.setBorderTop(BorderStyle.THIN);//上边框titleStyle.setBorderRight(BorderStyle.THIN);//右边框titleStyle.setWrapText(true);return titleStyle;}@Overridepublic CellStyle stringSeptailStyle(Workbook workbook, boolean isWarp) {CellStyle style = workbook.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER);         // 水平居中style.setVerticalAlignment(VerticalAlignment.CENTER);   // 上下居中style.setBorderBottom(BorderStyle.THIN); //下边框style.setBorderLeft(BorderStyle.THIN);//左边框style.setBorderTop(BorderStyle.THIN);//上边框style.setBorderRight(BorderStyle.THIN);//右边框style.setDataFormat(STRING_FORMAT);if (isWarp) {style.setWrapText(true);}return style;}@Overridepublic CellStyle stringNoneStyle(Workbook workbook, boolean isWarp) {CellStyle style = workbook.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER);         // 水平居中style.setVerticalAlignment(VerticalAlignment.CENTER);   // 上下居中style.setBorderBottom(BorderStyle.THIN); //下边框style.setBorderLeft(BorderStyle.THIN);//左边框style.setBorderTop(BorderStyle.THIN);//上边框style.setBorderRight(BorderStyle.THIN);//右边框style.setDataFormat(STRING_FORMAT);if (isWarp) {style.setWrapText(true);}return style;}
}

总结

在网上浏览了很多其他的博客,发现如果想要实现自己的样式,就需要重新生成一个文本簿,然后再慢慢添加样式,添加表头,但浪费了我们写的实体类注解,很是麻烦。现在,把你想要的样式写入ExcelExportStylerUtil类即可实现,目前只是提供了单元格边框、字体居中的功能。这一篇文章可以与上一篇文章完美融合,使用起来非常丝滑,解决你Excel表的大部分问题。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...