EasyExcel 读取上传的excel

1 entity 定义:

/**
* @title DifferenceEntryExcelVO
* @description  模板导入
* @auth tangjd
* @create 2023/5/8 17:23
**/
@Data
public class DifferenceEntryExcelVO implements Serializable {

@ExcelProperty(index = 0)
@ApiModelProperty("序号")
private Integer serialNumber;

@ExcelProperty(index = 1)
private String voucherType;

@ExcelProperty(index = 2)
@ApiModelProperty("号码")
private String digitalTicketNumber;

@ExcelProperty(index = 3)
@ApiModelProperty("代码")
private String invoiceCode;

@ExcelProperty(index = 4)
@ApiModelProperty("号码")
private String invoiceNumber;

@ExcelProperty(index = 5)
@ApiModelProperty("凭证号码")
private String voucherNumber;

@ExcelProperty(index = 6)
@ApiModelProperty("开具日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private String dateOfIssuance;

@ExcelProperty(index = 7)
@ApiModelProperty("凭证合计金额")
private String totalVoucherAmount;

@ExcelProperty(index = 8)
@ApiModelProperty("本次扣除金额")
private String currentAmountDeducted;

@ExcelProperty(index = 9)
@ApiModelProperty("备注")
private String notes;


}

2:service

/**
* @title UploadExcelAnalysisService
* @description 上传excel 解析service
* @auth tangjd
* @create 2023/5/8 17:42
**/
public interface UploadExcelAnalysisService {

/**
* 将上传的excel 解析为具体的类型对象
*
* @param t 目标
* @param headRowNumber 第几行开始读
* @param excelFiles 上传的excel
* @param <T>
* @return
*/
<T> List<T> uploadExcelAnalysis(Class t, int headRowNumber, MultipartFile excelFiles) throws Exception;
}

3: serviceImpl


/**
* @title UploadExcelAnalysisServiceImpl
* @description
* @auth tangjd
* @create 2023/5/8 17:43
**/
@Service("uploadExcelAnalysisService")
@Slf4j
public class UploadExcelAnalysisServiceImpl implements UploadExcelAnalysisService {


/**
* 将上传的excel 解析为具体的类型对象
*
* @param t 目标
* @param headRowNumber 第几行开始读
* @param excelFiles 上传的excel
* @param <T>
* @return
*/
@Override
public <T> List<T> uploadExcelAnalysis(Class t, int headRowNumber, MultipartFile excelFiles) throws Exception {

List<T> result = new ArrayList<>();

// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(excelFiles.getInputStream(), t, new SyncReadListener() {

//读取每一行进行的操作
@Override
public void invoke(Object object, AnalysisContext context) {
result.add((T) object);
}

//读取表头
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
// System.out.println("表头信息:"+headMap);
}
}).headRowNumber(headRowNumber).doReadAll();//.headRowNumber(3)表示从第几行开始读取,有的文件title不在第一行

// 注意如果有隐藏sheet, 需要指定sheet名称或者索引,如下所示
//}).sheet(sheetName).headRowNumber(headRowNumber).doRead();//.headRowNumber(3)表示从第几行开始读取,有的文件title不在第一行

return result;
}
}

 4: controller

/**
* @title ImportExcelController
* @description excel 导入解析
* @auth tangjd
* @create 2023/5/8 17:18
**/
@Api(tags = "excel 导入解析")
@RestController
@RequestMapping("/upload/excel/analysis")
@Slf4j
public class UploadExcelAnalysisController {

@Resource
private UploadExcelAnalysisService uploadExcelAnalysisService;

@ApiOperation("模板导入excel解析返回")
@PostMapping("/difference-entry")
public R uploadExcelAnalysis(@RequestParam(value = "files", required = true) MultipartFile excelFiles) {


 uploadExcelAnalysisService.uploadExcelAnalysis(DifferenceEntryExcelVO.class, 3, excelFiles));



// xxx处理

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值