forked from fanruan/easyexcel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.4 KiB
82 lines
2.4 KiB
package com.alibaba.excel.support; |
|
|
|
import java.io.BufferedInputStream; |
|
import java.io.File; |
|
import java.io.FileInputStream; |
|
import java.io.IOException; |
|
import java.io.InputStream; |
|
|
|
import org.apache.poi.poifs.filesystem.FileMagic; |
|
|
|
import com.alibaba.excel.exception.ExcelCommonException; |
|
|
|
/** |
|
* @author jipengfei |
|
*/ |
|
public enum ExcelTypeEnum { |
|
/** |
|
* xls |
|
*/ |
|
XLS(".xls"), |
|
/** |
|
* xlsx |
|
*/ |
|
XLSX(".xlsx"); |
|
|
|
private String value; |
|
|
|
ExcelTypeEnum(String value) { |
|
this.setValue(value); |
|
} |
|
|
|
public static ExcelTypeEnum valueOf(File file, InputStream inputStream, ExcelTypeEnum excelType) { |
|
try { |
|
FileMagic fileMagic; |
|
if (file != null) { |
|
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file)); |
|
try { |
|
fileMagic = FileMagic.valueOf(bufferedInputStream); |
|
} finally { |
|
bufferedInputStream.close(); |
|
} |
|
if (!FileMagic.OLE2.equals(fileMagic) && !FileMagic.OOXML.equals(fileMagic)) { |
|
String fileName = file.getName(); |
|
if (fileName.endsWith(XLSX.getValue())) { |
|
return XLSX; |
|
} else if (fileName.endsWith(XLS.getValue())) { |
|
return XLS; |
|
} else { |
|
throw new ExcelCommonException("Unknown excel type."); |
|
} |
|
} |
|
} else { |
|
fileMagic = FileMagic.valueOf(inputStream); |
|
} |
|
if (FileMagic.OLE2.equals(fileMagic)) { |
|
return XLS; |
|
} |
|
if (FileMagic.OOXML.equals(fileMagic)) { |
|
return XLSX; |
|
} |
|
} catch (IOException e) { |
|
if (excelType != null) { |
|
return excelType; |
|
} |
|
throw new ExcelCommonException( |
|
"Convert excel format exception.You can try specifying the 'excelType' yourself", e); |
|
} |
|
if (excelType != null) { |
|
return excelType; |
|
} |
|
throw new ExcelCommonException( |
|
"Convert excel format exception.You can try specifying the 'excelType' yourself"); |
|
} |
|
|
|
public String getValue() { |
|
return value; |
|
} |
|
|
|
public void setValue(String value) { |
|
this.value = value; |
|
} |
|
}
|
|
|