2
触发场景描述
在读com.alibaba.excel.write.executor.ExcelWriteFillExecutor#prepareData
的时候,发现代码读FILL_PREFIX
和FILL_SUFFIX
时没有先检查前后顺序就调用subString方法,因此在前括号{
之前存在未被注释的后括号}
时会出现java.lang.StringIndexOutOfBoundsException
异常,在没读过源码的情况下可能会很困惑,可以增加判断进行优化。
触发Bug的代码
@Getter
@Setter
@EqualsAndHashCode
public class FillData {
@ContentFontStyle(underline = Font.U_SINGLE)
private String name;
@ContentFontStyle(underline = Font.U_SINGLE)
private double number;
}
@Test
public void simpleFill() {
String templateFileName =
TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "simpleIssue.xlsx";
// 方案1 根据对象填充
String fileName = TestFileUtil.getPath() + "simpleFillIssue" + System.currentTimeMillis() + ".xlsx";
//测试代码
FillData fillData = new FillData();
fillData.setName("张三");
fillData.setNumber(5.2);
EasyExcel.write(fileName,FillData.class).withTemplate(templateFileName).sheet().doFill(fillData);
}
照着demo示例写的样板填充代码。
提示的异常或者没有达到的效果
单元格数据: