【日常记录-Java】EasyExcel输出设定字体

复制代码
Author:赵志乾
Date:2024-08-15
Declaration:All Right Reserved!!!

1. 问题描述

使用EasyExcel默认的设定输出时,中文字体显得比较怪异。

2. 解决方案

本质是单元格样式的设置问题,在EasyExcel中,可以通过实现WriteHandler接口或使用EasyExcel提供的注解以及WriteCellStyle来自定义样式。由于EasyExcel本身提供了HorizontalCellStyleStrategy,其允许开发者自定义表头和内容的样式,功能上足以满足简单需求。

设定表头样式为楷体14号加粗居中对齐、内容样式为楷体11号居中对齐,代码如下:

复制代码
private static HorizontalCellStyleStrategy horizontalCellStyleStrategy;

static {
   WriteFont headFont = new WriteFont();
   headFont.setFontName("楷体");
   headFont.setFontHeightInPoints((short) 14);
   headFont.setBold(true);

   WriteFont contentFont = new WriteFont();
   contentFont.setFontName("楷体");
   contentFont.setFontHeightInPoints((short) 11);
   contentFont.setBold(false);

   WriteCellStyle headCellStyle = new WriteCellStyle();
   headCellStyle.setWriteFont(headFont);
   headCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);

   WriteCellStyle contentCellStyle = new WriteCellStyle();
   contentCellStyle.setWriteFont(contentFont);
   contentCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);

   horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headCellStyle, contentCellStyle);
}


public static void write(String fullName, String sheetName, List<T> items, Class<T> clazz){
    EasyExcel.write(fullName, clazz)
                    .registerWriteHandler(horizontalCellStyleStrategy)
                    .registerConverter(new DateTimeConverter())
                    .sheet(sheetName)
                    .doWrite(items);
}
相关推荐
wangchunyu11432 分钟前
JDK8新特性实战(Lambda、Stream、Optional)
java·开发语言
JosieBook43 分钟前
【多线程】两台机器同时抢一个字典:一次并发 Bug 的排查
java·网络·bug
牛战士coding1 小时前
LLM 选错工具怎么办?提示词之外还需要确定性规则兜底
java·人工智能
今天的砖头有点烫手啊1 小时前
Java 序列化到底怎么选?从 Serializable 到 Protobuf 的演进与选型
java·json
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 登录发送验证码的测试验证与经验复盘
java·开发语言·交友
夕除1 小时前
redis--主从还是集群,内存
java·spring·mybatis
百数平台1 小时前
低代码安全技术实践:表单 / 流程 / 报表三级权限体系设计解析
java·大数据·数据库
白露与泡影1 小时前
Spring Boot 实现验证码:Hutool-captcha、AJ-Captcha、EasyCaptcha 到底怎么选?
java·spring boot·后端
马优晨1 小时前
Java中的dto是什么
java·开发语言·java中的dto是什么·java的dto是什么·dto在java中是什么
小蒜学长1 小时前
基于Springboot+Vue的高校教师教学业绩综合管理系统的设计与开发(代码+数据库+LW)
java·数据库·spring boot·后端·教学业绩管理·三级权限