看固定模板的种植体式是这么的yqk 勾引
public class FourListExcelDto {
@ContentStyle(dataFormat = 14)
@DateTimeFormat("yyyy/M/dd")
@ExcelProperty({"本事"})
private Date exportDate;
}
然而非固定模板的是证实你来的数据来生成文献的这么就无法使用了。
用EasyExcel.write(outputStream).registerWriteHandler(xxx).doWrite(data)生成文献,咱们不错我方达成一个registerWriteHandler,去体式化单位格。
新建Handler类,继承AbstractCellStyleStrategy
public class ExcelCellStyleStrategy extends AbstractCellStyleStrategy {
/**
* 单位格体式列表(体式:GENERAL、CURRENCY_¥、CURRENCY_$、DATE、NUMERIC)
*/
private final List<String> cellDataTypes;
/**
* WorkBoot
*/
private Workbook workbook;
/**
* 构造措施,创建对象时传入需要定制的表头信息队伍
*/
public ExcelCellStyleStrategy(List<String> cellDataTypes) {
this.cellDataTypes = cellDataTypes;
}
@Overrideyqk 勾引
protected void initCellStyle(Workbook workbook) {
// 运鼎新信息时,保存Workbook对象,转机时需要使用
this.workbook = workbook;
}
@Override
protected void setHeadCellStyle(Cell cell, Head head, Integer relativeRowIndex) {
// 照应表头的
}
@Override
protected void setContentCellStyle(Cell cell, Head head, Integer relativeRowIndex) {
CellStyle cellStyle = workbook.createCellStyle();
String cellValue = cell.getStringCellValue();
汤唯车震String dataTypes = cellDataTypes.get(head.getColumnIndex());
switch (dataTypes) {
case "DATE":
// 本事
if (StrUtil.isNotBlank(cellValue)) {
DateTime dateTime = DateUtil.parseDateTime(cellValue);
cell.setCellValue(DateUtil.format(dateTime, "yyyy/m/d h:mm"));
cellStyle.setDataFormat((short) 164);
}
break;
case "NUMERIC":
// 数字
cell.setCellType(CellType.NUMERIC);
// cellStyle.setDataFormat((short) 1);
// 自界说体式
// 1 -> "0", 暗示整数
// 2 -> "0.00", 暗示浮点数
// 3 -> "#,##0", 暗示三个数字加一个","体式的整数
// 4 -> "#,##0.00", 暗示三个数字加一个","体式的浮点数
if (StrUtil.isBlank(cellValue)) {
cell.setCellValue("");
} else {
cell.setCellValue(Integer.parseInt(cellValue));
}
break;
default:
if (dataTypes.startsWith("CURRENCY_")) {
// 货币
String currency = dataTypes.substring(9);
cell.setCellValue(StrUtil.format("{}{}", currency, StrUtil.isBlank(cellValue) ? "-" : cellValue));
cellStyle.setDataFormat((short) 42);
}
// 默许是通用类型,无需非凡照应
}
cell.setCellStyle(cellStyle);
}
}
主要看setContentCellStyle措施,创建ExcelCellStyleStrategy时需要把每一列的数据类型传递过来。
cellStyle.setDataFormat这个有预料,不错好好商议一下。
easypoi赞助的自界说体式列表
BuiltinFormats类的_formats列内外的自界说体式才灵验,不然就会使用文实质式。
纪录数据类型就证实你推行情况来写了,底下时我这边的。证实业务来写的,别无脑跟!
图片
种植后果
图片
货币
日历
唯重
体恤
————————————————
版权声明:本文为CSDN博主「唯重」的原创著作,罢免CC 4.0 BY-SA版权契约,转载请附上原文出处流畅及本声明。
原文流畅:https://blog.csdn.net/GMingZhou/article/details/124149506yqk 勾引
本站仅提供存储干事,通盘内容均由用户发布,如发现存害或侵权内容,请点击举报。