Test Excel
public class OrderProductImport extends BaseImportExcelBase {
@Override
protected void checkColumn(List<Object> columnTabNames) {
boolean model = columnTabNames.stream().anyMatch(e -> ObjectUtil.contains(e, "Model"));
boolean specification = columnTabNames.stream().anyMatch(e -> ObjectUtil.contains(e, "Specification"));
boolean productNumber = columnTabNames.stream().anyMatch(e -> ObjectUtil.contains(e, "Product Number"));
boolean quantity = columnTabNames.stream().anyMatch(e -> ObjectUtil.contains(e, "Quantity"));
boolean wareHouse = columnTabNames.stream().anyMatch(e -> ObjectUtil.contains(e, "WareHouse"));
boolean isHeader = !(model && specification && productNumber && quantity && wareHouse);
if (isHeader) {
throw new BizException("列名不对");
}
}
@Override
protected void checkData(List<List<Object>> rows) {
}
@Override
protected void checkRowData(List<Object> rows) {
}
}
public class OrderProductImportDTO {
@ExcelField(column = 0)
private String model;
@ExcelField(column = 1)
private String specification;
@ExcelField(column = 2)
private String productNumber;
@ExcelField(column = 3, required = true, errorMsg = "Quantity* empty.")
private String quantity;
@ExcelField(column = 4)
private String wareHouse;
@ExcelField(column = 5)
private String netPrice;
}
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ExcelField {
/**
* 列数,从0开始
* @return
*/
int column();
/**
* 是否必填
* @return
*/
boolean required() default false;
/**
* 返回的错误信息
* @return
*/
String errorMsg() default "";
}
public class TestExcel {
@Autowired
private BaseImportExcelBase orderProductImport;
public List<OrderProductImportDTO> importProduct(MultipartFile file ) {
List<OrderProductImportDTO> orderProducts = orderProductImport.importExcelRowHandlerBean(file, OrderProductImportDTO.class);
return orderProducts;
}
}