看固定模板的缔造步地是这么的
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;
}
@Override
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);
近10期,前区和值范围在51--111之间开出,近十期和值的平均值是86.4,上期开出奖号和值为51,本期预测和值上升,推荐和值在94左右。
cell.setCellValue(StrUtil.format("{}{}", currency, StrUtil.isBlank(cellValue) ? "-" : cellValue));
cellStyle.setDataFormat((short) 42);
}
// 默许是通用类型,物联网app开发无需极端处置
}
cell.setCellStyle(cellStyle);
}
}
主要看setContentCellStyle顺次,创建ExcelCellStyleStrategy时需要把每一列的数据类型传递过来。
cellStyle.setDataFormat这个有道理,不错好好磋商一下。
easypoi扶助的自界说步地列表
BuiltinFormats类的_formats列内外的自界说步地才灵验,不然就会使用文本步地。
记载数据类型就字据你本色情况来写了,底下时我这边的。字据业务来写的,别无脑跟!
图片
缔造成果
图片
货币
日历
唯重
和蔼
————————————————
版权声明:本文为CSDN博主「唯重」的原创著作,衔命CC 4.0 BY-SA版权条约,转载请附上原文出处邻接及本声明。
原文邻接:https://blog.csdn.net/GMingZhou/article/details/124149506物联网软件开发公司
本站仅提供存储就业,通盘内容均由用户发布,如发现存害或侵权内容,请点击举报。