有时候,要对导出的excel文件设定独特的样式,或是为了美观,或是为了显眼.那么,如何设置样式呢?
实体类
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.enums.BooleanEnum;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import com.alibaba.excel.metadata.data.WriteCellData;
import lombok.Data;
@Data
@HeadRowHeight(30)
//属性注释在最下
@ContentStyle(wrapped = BooleanEnum.TRUE, verticalAlignment = VerticalAlignmentEnum.CENTER, borderBottom = BorderStyleEnum.THIN, borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN)
public class ExportHeadersLinkExcel {
/**
* 金
*/
@ExcelProperty(value = {"七灵图","五行", "金"})
private String jin;
/**
* 木
*/
@ExcelProperty(value = {"七灵图","五行", "木"})
private String mu;
/**
* 水
*/
@ExcelProperty(value = {"七灵图","五行", "水"})
private String shui;
/**
* 火
*/
@ExcelProperty(value = {"七灵图","五行", "火"})
private String huo;
/**
* 土
*/
@ExcelProperty(value = {"七灵图","五行", "土"})
private String tu;
/**
* 阴
*/
@ExcelProperty(value = {"七灵图","两仪", "阴"})
private String yin;
/**
* 阳
*/
@ExcelProperty(value = {"七灵图","两仪", "阳"})
private String yang;
/**
* 超链接
*
*/
private WriteCellData<String> hyperlink;
/**
* 备注
*
*/
private WriteCellData<String> commentData;
/**
* 公式
*
*/
private WriteCellData<String> formulaData;
/**
* 指定单元格的样式。当然样式 也可以用注解等方式。
*
*/
private WriteCellData<String> writeCellStyle;
/**
* 指定一个单元格有多个样式
*
*/
private WriteCellData<String> richText;
}
代码
public void exportHeadersValueStyle(String path) {
String sheetName = "sheetName";
ExportHeadersLinkExcel excel = new ExportHeadersLinkExcel();
excel.setJin("10");
excel.setMu("2.00");
excel.setShui("3.00");
excel.setHuo("4.00");
excel.setTu("5.00");
excel.setYin("6.00");
excel.setYang("7.01");
// 设置单个单元格的样式 当然样式 很多的话 也可以用注解等方式。
WriteCellData<String> writeCellStyle = new WriteCellData<>("单元格样式");
WriteCellStyle writeCellStyleData = new WriteCellStyle();
// 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.
writeCellStyleData.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
// 背景绿色
writeCellStyleData.setFillForegroundColor(IndexedColors.GREEN.getIndex());
writeCellStyle.setWriteCellStyle(writeCellStyleData);
writeCellStyle.setType(CellDataTypeEnum.STRING);
excel.setWriteCellStyle(writeCellStyle);
// 设置单个单元格多种样式
// 这里需要设置 inMomery=true 不然会导致无法展示单个单元格多种样式,所以慎用
WriteCellData<String> richTest = new WriteCellData<>();
RichTextStringData richTextStringData = new RichTextStringData();
richTextStringData.setTextString("红色绿色默认");
// 前2个字红色
WriteFont writeFont = new WriteFont();
writeFont.setColor(IndexedColors.RED.getIndex());
richTextStringData.applyFont(0, 2, writeFont);
// 接下来2个字绿色
writeFont = new WriteFont();
writeFont.setColor(IndexedColors.GREEN.getIndex());
richTextStringData.applyFont(2, 4, writeFont);
richTest.setRichTextStringDataValue(richTextStringData);
richTest.setType(CellDataTypeEnum.RICH_TEXT_STRING);
excel.setRichText(richTest);
List<ExportHeadersLinkExcel> excels = new ArrayList<>();
excels.add(excel);
EasyExcel.write(path, ExportHeadersLinkExcel.class)
.inMemory(true)
.sheet(sheetName)
.doWrite(excels);
}
一个单元格多种样式需要启用内存.
在设置单元格背景或字体的颜色的时候,颜色会对应一个short类型的数据,下面是具体对应关系
git仓库:导入导出: 导入导出的实例
更多导出场景:多场景easyExcel导出excel文件(一)-优快云博客
读取excel场景:多场景easyExcel读取excel文件(二)-优快云博客
根据模板填充excel:多场景easyExcel根据模板填充excel文件(三)-优快云博客