EasyExcel中处理表头行高和内容行高
easyexcel
快速、简洁、解决大文件内存溢出的java处理Excel工具
项目地址:https://gitcode.com/gh_mirrors/ea/easyexcel
免费下载资源
·
在学习easyExcek
时,发现使用easyExcek
处理表头和内容的行高十分容易只需要在类模型配置上使用@HeadRowHeight
或者@ContentRowHeight
注解实现控制。
- 创建一个类模型配置类
// 设置表头行高度
@HeadRowHeight(40)
// 设置内容行高度
@ContentRowHeight(60)
@Data
public class User {
private String name;
private String age;
private String address;
}
- 测试主类
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
User user = new User();
user.setName("李四");
user.setAge("12");
user.setAddress("火星");
userList.add(user);
EasyExcel.write("F:\\excel\\a.xls", User.class)
.automaticMergeHead(false)
.sheet()
.doWrite(userList);
}
- 效果
总体感觉还是很easy的。
下面看看具体的源码:
- 注解
@HeadRowHeight
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface HeadRowHeight {
/**
* 设置表头高,默认是-1,-1 表示自动设置高度
*/
short value() default -1;
}
- 注解
@ContentRowHeight
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface ContentRowHeight {
/**
* 设置内容行高,默认是-1,-1 表示自动设置高度
*/
short value() default -1;
}
- 核心拦截器
public abstract class AbstractRowHeightStyleStrategy implements RowWriteHandler {
// 在完成该行的所有操作后调用。在填充的情况下,可以多次调用。
@Override
public void afterRowDispose(RowWriteHandlerContext context) {
if (context.getHead() == null) {
return;
}
// 当前是否是表头,是则调用setHeadColumnHeight
// 反之调用setContentColumnHeight
if (context.getHead()) {
setHeadColumnHeight(context.getRow(), context.getRelativeRowIndex());
} else {
setContentColumnHeight(context.getRow(), context.getRelativeRowIndex());
}
}
/**
* 设置表头行高抽象方法,需要子类进行实现
*
*/
protected abstract void setHeadColumnHeight(Row row, int relativeRowIndex);
/**
* 设置内容行高抽象方法,需要子类进行实现
*
*/
protected abstract void setContentColumnHeight(Row row, int relativeRowIndex);
}
- 唯一实现类
public class SimpleRowHeightStyleStrategy extends AbstractRowHeightStyleStrategy {
private final Short headRowHeight;
private final Short contentRowHeight;
public SimpleRowHeightStyleStrategy(Short headRowHeight, Short contentRowHeight) {
this.headRowHeight = headRowHeight;
this.contentRowHeight = contentRowHeight;
}
@Override
protected void setHeadColumnHeight(Row row, int relativeRowIndex) {
if (headRowHeight != null) {
row.setHeightInPoints(headRowHeight);
}
}
@Override
protected void setContentColumnHeight(Row row, int relativeRowIndex) {
if (contentRowHeight != null) {
row.setHeightInPoints(contentRowHeight);
}
}
}
GitHub 加速计划 / ea / easyexcel
31.64 K
7.47 K
下载
快速、简洁、解决大文件内存溢出的java处理Excel工具
最近提交(Master分支:3 个月前 )
c42183df
Bugfix 3 个月前
efa7dff6 * 重新加回 `commons-io`
3 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)