79、使用阿里的EasyExcel 报错 Convert excel format exception.You can try specifying the ‘excelType‘ yourself
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();
}
read的一些方法
/**
* 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);
}