79. Ali의 EasyExcel을 사용하여 Excel 형식 변환 예외를 보고합니다. 'excelType'을 직접 지정할 수 있습니다.
1. 프로젝트 버전 확인 2.x인 경우 3.1.x 이상으로 대체 가능하며 자동으로 인식
검증없이 프로젝트는 2.x를 사용하고 버전 번호를 변경하면 많은 오래된 것을 인식할 수 없습니다.
프로젝트에서 사용하는 버전은 솔루션인 2.x입니다.
1、网上说是流的属性发生变化了,不是一个文件流,重新new了文件流还是报错 ----未解决
List<Object> objects = EasyExcel.read(new BufferedInputStream(inputStream), easyExcelExceptionUtil).sheet(sheetName.getSheetName()).doReadSync();
2、指定文件的类型 还是报错 ---未解决
List<Object> objects = EasyExcel.read(new BufferedInputStream(inputStream), easyExcelExceptionUtil).excelType(ExcelTypeEnum.XLS).sheet(sheetName.getSheetName()).doReadSync();
3、查看源码发现,read方法有好多种,决定更换读取方式,放置文件的路径 -- 解决
List<Object> objects = EasyExcel.read(caseUploadPath + dataImportDto.getFileUrl(), easyExcelExceptionUtil).sheet(sheetName.getSheetName()).doReadSync();
此时发现读取只能读取单个类型的文件xlsx 或者xls 中的一种
加上判断,用来区分文件类型
根据文件来切割获取文件类型
String[] fileNameArr = file.getName().split("\\.");
List<Object> objects;
// xls 或者 xlxs
if (ObjectUtil.equal(fileNameArr[1],"xls")){
objects = EasyExcel.read(caseUploadPath + dataImportDto.getFileUrl(), easyExcelExceptionUtil).excelType(ExcelTypeEnum.XLS).sheet(sheetName.getSheetName()).doReadSync();
}else {
objects = EasyExcel.read(caseUploadPath + dataImportDto.getFileUrl(), easyExcelExceptionUtil).sheet(sheetName.getSheetName()).doReadSync();
}
몇 가지 읽기 방법
/**
* Build excel the read
*
* @param pathName
* File path to read.
* @param head
* Annotate the class for configuration information.
* @param readListener
* Read listener.
* @return Excel reader builder.
*/
public static ExcelReaderBuilder read(String pathName, Class head, ReadListener readListener) {
ExcelReaderBuilder excelReaderBuilder = new ExcelReaderBuilder();
excelReaderBuilder.file(pathName);
if (head != null) {
excelReaderBuilder.head(head);
}
if (readListener != null) {
excelReaderBuilder.registerReadListener(readListener);
}
return excelReaderBuilder;
}
/**
* Build excel the read
*
* @param inputStream
* Input stream to read.
* @return Excel reader builder.
*/
public static ExcelReaderBuilder read(InputStream inputStream) {
return read(inputStream, null, null);
}
/**
* Build excel the read
*
* @param inputStream
* Input stream to read.
* @param readListener
* Read listener.
* @return Excel reader builder.
*/
public static ExcelReaderBuilder read(InputStream inputStream, ReadListener readListener) {
return read(inputStream, null, readListener);
}