@Test
public void test() throws IOException {
MultipartFile file = mockExcelInfo(8000);
List<Pms> pmsList = Lists.newArrayList();
Map<Integer,String> errorInfo = Maps.newHashMap();
EasyExcel.read(file.getInputStream(), Pms.class, new AnalysisEventListener<Pms>() {
@Override
public void invoke(Pms pms, AnalysisContext analysisContext) {
Integer rowIndex = analysisContext.readRowHolder().getRowIndex();
if (ObjectUtils.isNotNull(pms)){
pmsList.add(pms);
String pid = pms.getPid();
errorInfo.put(rowIndex,"pid;sasaaaaaaaaaaaaaaaaaaaaaaaaaaa;asssssssssssss;saaaaaaaaaaaaa;asssssss");
}
}
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
Integer rowIndex = context.readRowHolder().getRowIndex();
for (Field field : Pms.class.getFields()) {
ExcelProperty excelProperty = field.getAnnotation(ExcelProperty.class);
if (!excelProperty.value().equals(headMap.get(excelProperty.index()))){
System.out.println("表头信息不对");
break;
}
}
System.out.println("表头数据:" + headMap);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}).sheet().doRead();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
List<List<String>> heads = Lists.newArrayList();
EasyExcel.write(outputStream,Pms.class).withTemplate(file.getInputStream()).sheet("Template").head(heads).registerWriteHandler(
new SheetWriteHandler() {
@Override
public void afterSheetCreate(SheetWriteHandlerContext context) {
SheetWriteHandler.super.afterSheetCreate(context);
}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
Sheet cachedSheet = writeSheetHolder.getCachedSheet();
for (int i = 1; i <= cachedSheet.getLastRowNum(); i++) {
Row row = cachedSheet.getRow(i);
if (ObjectUtils.isNotNull(row)){
Cell cell = row.createCell(row.getLastCellNum(), CellType.STRING);
String error = errorInfo.get(i);
cell.setCellValue(error);
}
}
}
}
).doWrite(Collections.emptyList());
}
private MultipartFile mockExcelInfo(int rows) throws IOException {
List<Pms> list = Lists.newArrayList();
for (int i = 0; i < rows; i++) {
Pms pms = new Pms();
pms.setPid(i+"");
pms.setMid(i+"");
pms.setSid(i+"");
pms.setSellerId(i+"");
pms.setTerminalId(i+"");
pms.setShopName(i+"");
list.add(pms);
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
EasyExcel.write(outputStream,Pms.class).sheet("Template").doWrite(list);
InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
return new MockMultipartFile("test.xlsx",inputStream);
}
easyExcel批量导入,失败时解析错误原因
最新推荐文章于 2024-11-07 10:17:27 发布