EXCEL上传指定行读取数据 可直接使用

该文介绍了如何利用EasyExcel库处理Excel文件,通过定义实体类和自定义转换器来指定行读取数据。具体包括:设置ExcelProperty注解以映射列,自定义IntegerConverter将中文数字转换为Integer,创建DataEasyExcelListener监听器存储读取数据,以及ExcelAnalysisUtil工具类用于读取文件。最后展示了上传文件并读取指定行数据的示例代码。
摘要由CSDN通过智能技术生成

前提:需要引入easyExcel

EXCEL上传指定行读取数据

前置条件

entity

@Data
	@AllArgsConstructor
	@NoArgsConstructor
	@Builder
	public static class ProductImportReq{
		@ExcelProperty(value = "外部商品编码",index = 0)
		@ApiModelProperty(value="外部产品编码")
		private String externalProductCode;

		@ExcelProperty(value = "商品编码",index = 1)
		@ApiModelProperty(value = "商品编码")
		private String productCode;
		/**
		 * 产品名称
		 */
		@ExcelProperty(value = "商品名称",index = 2)
		@ApiModelProperty(value = "产品名称")
		private String productName;


		@NotNull(message = "是否标品")
		@ExcelProperty(value = "是否标品",converter = IntegerConverter.class,index = 3)
		@ApiModelProperty(value = "是否标准品0 否  1是")
		private Integer isStandard;}

中文数字转换器

public class IntegerConverter implements Converter<Integer> {
	@Override
	public Class supportJavaTypeKey() {
		return Integer.class;
	}

	@Override
	public CellDataTypeEnum supportExcelTypeKey() {
		return CellDataTypeEnum.STRING;
	}

	@Override
	public Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
		Integer result=null==cellData.getStringValue()?null:"是".equals(cellData.getStringValue()) ? 1 : 0;
		return result;
	}

	@Override
	public WriteCellData<String> convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
		return new WriteCellData<String>(Objects.equals(value, 1) ? "是" : "否");
	}
}

1.继承AnalysisEventListener

public class DataEasyExcelListener <T> extends AnalysisEventListener {

	private List<T> list = new ArrayList<>();

	@Override
	public void invoke(Object data, AnalysisContext analysisContext) {
		list.add((T) data);
	}

	@Override
	public void doAfterAllAnalysed(AnalysisContext analysisContext) {
	}

	public List<T> getData() {
		return list;
	}
}

2.EXCEL文件读取工具

public class ExcelAnalysisUtil<T> {
	public   List<T> readFile(MultipartFile file,Class head,Integer rowIndex) throws IOException {
		DataEasyExcelListener<ProductReq.ProductImportReq> listener = new DataEasyExcelListener<>();
		EasyExcel.read(file.getInputStream(), head, listener).sheet(0).headRowNumber(rowIndex).doRead();
		return (List<T>) listener.getData();
	}
	public   List<T> readFile(MultipartFile file,Class head) throws IOException {
		return readFile(file,head,0);
	}
}

3.excel文件上传

public R importProduct(MultipartFile file) throws IOException {
		List<ProductReq.ProductImportReq> excelVOList = new ExcelAnalysisUtil().readFile(file,ProductReq.ProductImportReq.class,2);
//业务实现

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值