使用easyexcel版本 excel文件校验,将错误的数据标红并给出提示
时间: 2023-06-20 18:03:37 浏览: 787
JAVA超级简单的excel导入导出,springboot使用easypoi
以下是使用EasyExcel校验Excel文件并将错误数据标红和提示的示例代码:
```java
// 读取Excel文件
File file = new File("test.xlsx");
List<DemoData> dataList = null;
try {
dataList = EasyExcel.read(file).head(DemoData.class).sheet().doReadSync();
} catch (Exception e) {
e.printStackTrace();
}
// 校验数据
List<DemoData> errorList = new ArrayList<>();
for (DemoData data : dataList) {
// 校验数据,将错误的数据添加到errorList中
if (!validateData(data)) {
errorList.add(data);
}
}
// 将错误数据标红并给出提示
if (!errorList.isEmpty()) {
// 生成ExcelWriter
ExcelWriter writer = null;
try {
writer = EasyExcel.write(file).build();
} catch (Exception e) {
e.printStackTrace();
}
// 配置Sheet样式
Sheet sheet = new Sheet(1, 0, DemoData.class);
sheet.setTableStyle(createTableStyle());
sheet.setAutoWidth(true);
writer.write(dataList, sheet);
// 遍历错误数据,标红并添加提示
for (DemoData data : errorList) {
CellData cellData = new CellData(data.getErrorMsg());
cellData.setStyle(createCellStyle());
sheet.addCellComment(new CellAddress(data.getRowNum(), data.getColNum()), cellData);
}
// 关闭ExcelWriter
writer.finish();
}
// 校验数据的方法
private boolean validateData(DemoData data) {
boolean valid = true;
// 校验数据,并记录错误信息
if (data.getName() == null || data.getName().isEmpty()) {
data.setErrorMsg("姓名不能为空");
valid = false;
}
if (data.getAge() == null || data.getAge() <= 0) {
data.setErrorMsg("年龄不合法");
valid = false;
}
// 记录错误数据的行列号
if (!valid) {
data.setRowNum(data.getRowNum() + 1);
data.setColNum(data.getColNum() + 1);
}
return valid;
}
// 创建表格样式
private TableStyle createTableStyle() {
TableStyle tableStyle = new TableStyle();
tableStyle.setTableContentBackGroundColor(IndexedColors.WHITE);
tableStyle.setTableContentFont(new Font("Arial", 10));
tableStyle.setTableHeadBackGroundColor(IndexedColors.GREY_25_PERCENT);
tableStyle.setTableHeadFont(new Font("Arial", 10, true));
return tableStyle;
}
// 创建单元格样式
private CellStyle createCellStyle() {
CellStyle cellStyle = new CellStyle();
cellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
cellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
return cellStyle;
}
```
在上面的示例代码中,`DemoData`是一个Java类,表示Excel中的一行数据。`validateData`方法用于校验数据,并记录错误信息、行号和列号。如果校验失败,则将错误数据添加到`errorList`中。接着,将所有数据写回Excel文件,并遍历错误数据,将其标红并添加提示。`createTableStyle`和`createCellStyle`方法用于创建表格样式和单元格样式。
阅读全文