mirror of https://github.com/alibaba/easyexcel
Jiaju Zhuang
4 years ago
140 changed files with 937 additions and 2242 deletions
@ -1,36 +1,9 @@ |
|||||||
package com.alibaba.excel.converters; |
package com.alibaba.excel.converters; |
||||||
|
|
||||||
import com.alibaba.excel.enums.CellDataTypeEnum; |
|
||||||
import com.alibaba.excel.metadata.CellData; |
|
||||||
import com.alibaba.excel.metadata.GlobalConfiguration; |
|
||||||
import com.alibaba.excel.metadata.property.ExcelContentProperty; |
|
||||||
|
|
||||||
/** |
/** |
||||||
* An empty converter.It's automatically converted by type. |
* An empty converter.It's automatically converted by type. |
||||||
* |
* |
||||||
* @author Jiaju Zhuang |
* @author Jiaju Zhuang |
||||||
*/ |
*/ |
||||||
public class AutoConverter implements Converter<Object> { |
public class AutoConverter implements Converter<Object> { |
||||||
|
|
||||||
@Override |
|
||||||
public Class<?> supportJavaTypeKey() { |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public CellDataTypeEnum supportExcelTypeKey() { |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public Object convertToJavaData(CellData<?> cellData, ExcelContentProperty contentProperty, |
|
||||||
GlobalConfiguration globalConfiguration) { |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public CellData<?> convertToExcelData(Object value, ExcelContentProperty contentProperty, |
|
||||||
GlobalConfiguration globalConfiguration) { |
|
||||||
return null; |
|
||||||
} |
|
||||||
} |
} |
||||||
|
@ -0,0 +1,30 @@ |
|||||||
|
package com.alibaba.excel.converters; |
||||||
|
|
||||||
|
import com.alibaba.excel.context.AnalysisContext; |
||||||
|
import com.alibaba.excel.metadata.data.ReadCellData; |
||||||
|
import com.alibaba.excel.metadata.property.ExcelContentProperty; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* read converter context |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@AllArgsConstructor |
||||||
|
public class ReadConverterContext<T> { |
||||||
|
/** |
||||||
|
* Excel cell data.NotNull. |
||||||
|
*/ |
||||||
|
private ReadCellData<T> readCellData; |
||||||
|
/** |
||||||
|
* Content property.Nullable. |
||||||
|
*/ |
||||||
|
private ExcelContentProperty contentProperty; |
||||||
|
/** |
||||||
|
* context.NotNull. |
||||||
|
*/ |
||||||
|
private AnalysisContext analysisContext; |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
package com.alibaba.excel.converters; |
||||||
|
|
||||||
|
import com.alibaba.excel.context.WriteContext; |
||||||
|
import com.alibaba.excel.metadata.property.ExcelContentProperty; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* write converter context |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@AllArgsConstructor |
||||||
|
public class WriteConverterContext<T> { |
||||||
|
|
||||||
|
/** |
||||||
|
* Java Data.NotNull. |
||||||
|
*/ |
||||||
|
private T value; |
||||||
|
|
||||||
|
/** |
||||||
|
* Content property.Nullable. |
||||||
|
*/ |
||||||
|
private ExcelContentProperty contentProperty; |
||||||
|
|
||||||
|
/** |
||||||
|
* write context |
||||||
|
*/ |
||||||
|
private WriteContext writeContext; |
||||||
|
} |
@ -1,38 +0,0 @@ |
|||||||
package com.alibaba.excel.event; |
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.Cell; |
|
||||||
import org.apache.poi.ss.usermodel.Row; |
|
||||||
import org.apache.poi.ss.usermodel.Sheet; |
|
||||||
|
|
||||||
/** |
|
||||||
* |
|
||||||
* @author jipengfei |
|
||||||
* @deprecated please use {@link com.alibaba.excel.write.handler.WriteHandler} |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public interface WriteHandler { |
|
||||||
|
|
||||||
/** |
|
||||||
* Custom operation after creating each sheet |
|
||||||
* |
|
||||||
* @param sheetNo |
|
||||||
* @param sheet |
|
||||||
*/ |
|
||||||
void sheet(int sheetNo, Sheet sheet); |
|
||||||
|
|
||||||
/** |
|
||||||
* Custom operation after creating each row |
|
||||||
* |
|
||||||
* @param rowNum |
|
||||||
* @param row |
|
||||||
*/ |
|
||||||
void row(int rowNum, Row row); |
|
||||||
|
|
||||||
/** |
|
||||||
* Custom operation after creating each cell |
|
||||||
* |
|
||||||
* @param cellNum |
|
||||||
* @param cell |
|
||||||
*/ |
|
||||||
void cell(int cellNum, Cell cell); |
|
||||||
} |
|
@ -1,40 +0,0 @@ |
|||||||
package com.alibaba.excel.metadata; |
|
||||||
|
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.CellStyle; |
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnore; |
|
||||||
|
|
||||||
/** |
|
||||||
* Excel基础模型 |
|
||||||
* |
|
||||||
* @author jipengfei |
|
||||||
* @deprecated Now you don't need to extend any classes |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class BaseRowModel { |
|
||||||
|
|
||||||
/** |
|
||||||
* 每列样式 |
|
||||||
*/ |
|
||||||
@ExcelIgnore |
|
||||||
private Map<Integer, CellStyle> cellStyleMap = new HashMap<Integer, CellStyle>(); |
|
||||||
|
|
||||||
public void addStyle(Integer row, CellStyle cellStyle) { |
|
||||||
cellStyleMap.put(row, cellStyle); |
|
||||||
} |
|
||||||
|
|
||||||
public CellStyle getStyle(Integer row) { |
|
||||||
return cellStyleMap.get(row); |
|
||||||
} |
|
||||||
|
|
||||||
public Map<Integer, CellStyle> getCellStyleMap() { |
|
||||||
return cellStyleMap; |
|
||||||
} |
|
||||||
|
|
||||||
public void setCellStyleMap(Map<Integer, CellStyle> cellStyleMap) { |
|
||||||
this.cellStyleMap = cellStyleMap; |
|
||||||
} |
|
||||||
} |
|
@ -1,193 +0,0 @@ |
|||||||
package com.alibaba.excel.metadata; |
|
||||||
|
|
||||||
import java.math.BigDecimal; |
|
||||||
import java.util.Date; |
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.write.style.ImagePosition; |
|
||||||
import com.alibaba.excel.enums.CellDataTypeEnum; |
|
||||||
import com.alibaba.excel.metadata.property.ImagePositionProperty; |
|
||||||
import com.alibaba.excel.util.StringUtils; |
|
||||||
import com.alibaba.excel.write.metadata.style.WriteCellStyle; |
|
||||||
|
|
||||||
import lombok.Data; |
|
||||||
import org.apache.poi.ss.usermodel.Comment; |
|
||||||
import org.apache.poi.ss.usermodel.Hyperlink; |
|
||||||
import org.apache.poi.ss.usermodel.RichTextString; |
|
||||||
|
|
||||||
/** |
|
||||||
* Excel internal cell data. |
|
||||||
* |
|
||||||
* <p> |
|
||||||
* |
|
||||||
* @author Jiaju Zhuang |
|
||||||
*/ |
|
||||||
@Data |
|
||||||
public class CellData<T> extends AbstractCell { |
|
||||||
private CellDataTypeEnum type; |
|
||||||
/** |
|
||||||
* {@link CellDataTypeEnum#NUMBER} |
|
||||||
*/ |
|
||||||
private BigDecimal numberValue; |
|
||||||
/** |
|
||||||
* {@link CellDataTypeEnum#STRING} and{@link CellDataTypeEnum#ERROR} |
|
||||||
*/ |
|
||||||
private String stringValue; |
|
||||||
/** |
|
||||||
* {@link CellDataTypeEnum#BOOLEAN} |
|
||||||
*/ |
|
||||||
private Boolean booleanValue; |
|
||||||
|
|
||||||
/** |
|
||||||
* The resulting converted data. |
|
||||||
*/ |
|
||||||
private T data; |
|
||||||
|
|
||||||
/** |
|
||||||
* formula |
|
||||||
*/ |
|
||||||
private FormulaData formulaData; |
|
||||||
/** |
|
||||||
* data format |
|
||||||
*/ |
|
||||||
private DataFormat dataFormat; |
|
||||||
|
|
||||||
public CellData() {} |
|
||||||
|
|
||||||
public CellData(T data) { |
|
||||||
this.data = data; |
|
||||||
} |
|
||||||
|
|
||||||
public CellData(String stringValue) { |
|
||||||
this(CellDataTypeEnum.STRING, stringValue); |
|
||||||
} |
|
||||||
|
|
||||||
public CellData(CellDataTypeEnum type, String stringValue) { |
|
||||||
if (type != CellDataTypeEnum.STRING && type != CellDataTypeEnum.ERROR) { |
|
||||||
throw new IllegalArgumentException("Only support CellDataTypeEnum.STRING and CellDataTypeEnum.ERROR"); |
|
||||||
} |
|
||||||
if (stringValue == null) { |
|
||||||
throw new IllegalArgumentException("StringValue can not be null"); |
|
||||||
} |
|
||||||
this.type = type; |
|
||||||
this.stringValue = stringValue; |
|
||||||
} |
|
||||||
|
|
||||||
public CellData(BigDecimal numberValue) { |
|
||||||
if (numberValue == null) { |
|
||||||
throw new IllegalArgumentException("DoubleValue can not be null"); |
|
||||||
} |
|
||||||
this.type = CellDataTypeEnum.NUMBER; |
|
||||||
this.numberValue = numberValue; |
|
||||||
} |
|
||||||
|
|
||||||
public CellData(byte[] imageValue) { |
|
||||||
if (imageValue == null) { |
|
||||||
throw new IllegalArgumentException("ImageValue can not be null"); |
|
||||||
} |
|
||||||
this.type = CellDataTypeEnum.IMAGE; |
|
||||||
this.imageValue = imageValue; |
|
||||||
} |
|
||||||
|
|
||||||
public CellData(byte[] imageValue, ImagePosition imagePosition) { |
|
||||||
if (imageValue == null) { |
|
||||||
throw new IllegalArgumentException("ImageValue can not be null"); |
|
||||||
} |
|
||||||
if (imagePosition == null) { |
|
||||||
throw new IllegalArgumentException("ImagePosition can not be null"); |
|
||||||
} |
|
||||||
this.type = CellDataTypeEnum.IMAGE; |
|
||||||
this.imageValue = imageValue; |
|
||||||
this.imagePositionProperty = ImagePositionProperty.build(imagePosition); |
|
||||||
this.useImagePositionProperty = true; |
|
||||||
this.formula = Boolean.FALSE; |
|
||||||
} |
|
||||||
|
|
||||||
public CellData(Boolean booleanValue) { |
|
||||||
if (booleanValue == null) { |
|
||||||
throw new IllegalArgumentException("BooleanValue can not be null"); |
|
||||||
} |
|
||||||
this.type = CellDataTypeEnum.BOOLEAN; |
|
||||||
this.booleanValue = booleanValue; |
|
||||||
} |
|
||||||
|
|
||||||
public CellData(Date dateValue) { |
|
||||||
if (dateValue == null) { |
|
||||||
throw new IllegalArgumentException("DateValue can not be null"); |
|
||||||
} |
|
||||||
this.type = CellDataTypeEnum.DATE; |
|
||||||
this.dateValue = dateValue; |
|
||||||
this.formula = Boolean.FALSE; |
|
||||||
} |
|
||||||
|
|
||||||
public CellData(CellDataTypeEnum type) { |
|
||||||
if (type == null) { |
|
||||||
throw new IllegalArgumentException("Type can not be null"); |
|
||||||
} |
|
||||||
this.type = type; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Ensure that the object does not appear null |
|
||||||
*/ |
|
||||||
public void checkEmpty() { |
|
||||||
if (type == null) { |
|
||||||
type = CellDataTypeEnum.EMPTY; |
|
||||||
} |
|
||||||
switch (type) { |
|
||||||
case STRING: |
|
||||||
case ERROR: |
|
||||||
if (StringUtils.isEmpty(stringValue)) { |
|
||||||
type = CellDataTypeEnum.EMPTY; |
|
||||||
} |
|
||||||
return; |
|
||||||
case NUMBER: |
|
||||||
if (numberValue == null) { |
|
||||||
type = CellDataTypeEnum.EMPTY; |
|
||||||
} |
|
||||||
return; |
|
||||||
case BOOLEAN: |
|
||||||
if (booleanValue == null) { |
|
||||||
type = CellDataTypeEnum.EMPTY; |
|
||||||
} |
|
||||||
return; |
|
||||||
default: |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public static CellData<?> newEmptyInstance() { |
|
||||||
return newEmptyInstance(null, null); |
|
||||||
} |
|
||||||
|
|
||||||
public static CellData<?> newEmptyInstance(Integer rowIndex, Integer columnIndex) { |
|
||||||
CellData<?> cellData = new CellData<>(CellDataTypeEnum.EMPTY); |
|
||||||
cellData.setRowIndex(rowIndex); |
|
||||||
cellData.setColumnIndex(columnIndex); |
|
||||||
return cellData; |
|
||||||
} |
|
||||||
|
|
||||||
public static CellData<?> newInstance(Boolean booleanValue) { |
|
||||||
return newInstance(booleanValue, null, null); |
|
||||||
} |
|
||||||
|
|
||||||
public static CellData<?> newInstance(Boolean booleanValue, Integer rowIndex, Integer columnIndex) { |
|
||||||
CellData<?> cellData = new CellData<>(booleanValue); |
|
||||||
cellData.setRowIndex(rowIndex); |
|
||||||
cellData.setColumnIndex(columnIndex); |
|
||||||
return cellData; |
|
||||||
} |
|
||||||
|
|
||||||
public static CellData<?> newInstance(String stringValue, Integer rowIndex, Integer columnIndex) { |
|
||||||
CellData<?> cellData = new CellData<>(stringValue); |
|
||||||
cellData.setRowIndex(rowIndex); |
|
||||||
cellData.setColumnIndex(columnIndex); |
|
||||||
return cellData; |
|
||||||
} |
|
||||||
|
|
||||||
public static CellData<?> newInstance(BigDecimal numberValue, Integer rowIndex, Integer columnIndex) { |
|
||||||
CellData<?> cellData = new CellData<>(numberValue); |
|
||||||
cellData.setRowIndex(rowIndex); |
|
||||||
cellData.setColumnIndex(columnIndex); |
|
||||||
return cellData; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,10 +0,0 @@ |
|||||||
package com.alibaba.excel.metadata; |
|
||||||
|
|
||||||
/** |
|
||||||
* TODO |
|
||||||
* |
|
||||||
* @author Jiaju Zhuang |
|
||||||
*/ |
|
||||||
public class HyperlinkData { |
|
||||||
|
|
||||||
} |
|
@ -1,13 +0,0 @@ |
|||||||
package com.alibaba.excel.metadata; |
|
||||||
|
|
||||||
import lombok.Data; |
|
||||||
|
|
||||||
/** |
|
||||||
* TODO |
|
||||||
* |
|
||||||
* @author Jiaju Zhuang |
|
||||||
*/ |
|
||||||
@Data |
|
||||||
public class ReadCellData<T> extends CellData<T>{ |
|
||||||
|
|
||||||
} |
|
@ -1,162 +0,0 @@ |
|||||||
package com.alibaba.excel.metadata; |
|
||||||
|
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.List; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
/** |
|
||||||
* |
|
||||||
* @author jipengfei |
|
||||||
* @deprecated pleas use {@link com.alibaba.excel.write.metadata.WriteSheet} or |
|
||||||
* {@link com.alibaba.excel.read.metadata.ReadSheet} |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class Sheet { |
|
||||||
|
|
||||||
/** |
|
||||||
*/ |
|
||||||
private int headLineMun; |
|
||||||
|
|
||||||
/** |
|
||||||
* Starting from 1 |
|
||||||
*/ |
|
||||||
private int sheetNo; |
|
||||||
|
|
||||||
/** |
|
||||||
*/ |
|
||||||
private String sheetName; |
|
||||||
|
|
||||||
/** |
|
||||||
*/ |
|
||||||
private Class<? extends BaseRowModel> clazz; |
|
||||||
|
|
||||||
/** |
|
||||||
*/ |
|
||||||
private List<List<String>> head; |
|
||||||
|
|
||||||
/** |
|
||||||
* |
|
||||||
*/ |
|
||||||
private TableStyle tableStyle; |
|
||||||
|
|
||||||
/** |
|
||||||
* column with |
|
||||||
*/ |
|
||||||
private Map<Integer, Integer> columnWidthMap = new HashMap<Integer, Integer>(); |
|
||||||
|
|
||||||
/** |
|
||||||
* |
|
||||||
*/ |
|
||||||
private Boolean autoWidth = Boolean.FALSE; |
|
||||||
|
|
||||||
/** |
|
||||||
* |
|
||||||
*/ |
|
||||||
private int startRow = 0; |
|
||||||
|
|
||||||
public Sheet(int sheetNo) { |
|
||||||
this.sheetNo = sheetNo; |
|
||||||
} |
|
||||||
|
|
||||||
public Sheet(int sheetNo, int headLineMun) { |
|
||||||
this.sheetNo = sheetNo; |
|
||||||
this.headLineMun = headLineMun; |
|
||||||
} |
|
||||||
|
|
||||||
public Sheet(int sheetNo, int headLineMun, Class<? extends BaseRowModel> clazz) { |
|
||||||
this.sheetNo = sheetNo; |
|
||||||
this.headLineMun = headLineMun; |
|
||||||
this.clazz = clazz; |
|
||||||
} |
|
||||||
|
|
||||||
public Sheet(int sheetNo, int headLineMun, Class<? extends BaseRowModel> clazz, String sheetName, |
|
||||||
List<List<String>> head) { |
|
||||||
this.sheetNo = sheetNo; |
|
||||||
this.clazz = clazz; |
|
||||||
this.headLineMun = headLineMun; |
|
||||||
this.sheetName = sheetName; |
|
||||||
this.head = head; |
|
||||||
} |
|
||||||
|
|
||||||
public List<List<String>> getHead() { |
|
||||||
return head; |
|
||||||
} |
|
||||||
|
|
||||||
public void setHead(List<List<String>> head) { |
|
||||||
this.head = head; |
|
||||||
} |
|
||||||
|
|
||||||
public Class<? extends BaseRowModel> getClazz() { |
|
||||||
return clazz; |
|
||||||
} |
|
||||||
|
|
||||||
public void setClazz(Class<? extends BaseRowModel> clazz) { |
|
||||||
this.clazz = clazz; |
|
||||||
if (headLineMun == 0) { |
|
||||||
this.headLineMun = 1; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public int getHeadLineMun() { |
|
||||||
return headLineMun; |
|
||||||
} |
|
||||||
|
|
||||||
public void setHeadLineMun(int headLineMun) { |
|
||||||
this.headLineMun = headLineMun; |
|
||||||
} |
|
||||||
|
|
||||||
public int getSheetNo() { |
|
||||||
return sheetNo; |
|
||||||
} |
|
||||||
|
|
||||||
public void setSheetNo(int sheetNo) { |
|
||||||
this.sheetNo = sheetNo; |
|
||||||
} |
|
||||||
|
|
||||||
public String getSheetName() { |
|
||||||
return sheetName; |
|
||||||
} |
|
||||||
|
|
||||||
public void setSheetName(String sheetName) { |
|
||||||
this.sheetName = sheetName; |
|
||||||
} |
|
||||||
|
|
||||||
public TableStyle getTableStyle() { |
|
||||||
return tableStyle; |
|
||||||
} |
|
||||||
|
|
||||||
public void setTableStyle(TableStyle tableStyle) { |
|
||||||
this.tableStyle = tableStyle; |
|
||||||
} |
|
||||||
|
|
||||||
public Map<Integer, Integer> getColumnWidthMap() { |
|
||||||
return columnWidthMap; |
|
||||||
} |
|
||||||
|
|
||||||
public void setColumnWidthMap(Map<Integer, Integer> columnWidthMap) { |
|
||||||
this.columnWidthMap = columnWidthMap; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public String toString() { |
|
||||||
return "Sheet{" + "headLineMun=" + headLineMun + ", sheetNo=" + sheetNo + ", sheetName='" + sheetName + '\'' |
|
||||||
+ ", clazz=" + clazz + ", head=" + head + ", tableStyle=" + tableStyle + ", columnWidthMap=" |
|
||||||
+ columnWidthMap + '}'; |
|
||||||
} |
|
||||||
|
|
||||||
public Boolean getAutoWidth() { |
|
||||||
return autoWidth; |
|
||||||
} |
|
||||||
|
|
||||||
public void setAutoWidth(Boolean autoWidth) { |
|
||||||
this.autoWidth = autoWidth; |
|
||||||
} |
|
||||||
|
|
||||||
public int getStartRow() { |
|
||||||
return startRow; |
|
||||||
} |
|
||||||
|
|
||||||
public void setStartRow(int startRow) { |
|
||||||
this.startRow = startRow; |
|
||||||
} |
|
||||||
} |
|
@ -1,62 +0,0 @@ |
|||||||
package com.alibaba.excel.metadata; |
|
||||||
|
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author jipengfei |
|
||||||
* @deprecated please use {@link com.alibaba.excel.write.metadata.WriteTable} |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class Table { |
|
||||||
/** |
|
||||||
*/ |
|
||||||
private Class<? extends BaseRowModel> clazz; |
|
||||||
|
|
||||||
/** |
|
||||||
*/ |
|
||||||
private List<List<String>> head; |
|
||||||
|
|
||||||
/** |
|
||||||
*/ |
|
||||||
private int tableNo; |
|
||||||
|
|
||||||
/** |
|
||||||
*/ |
|
||||||
private TableStyle tableStyle; |
|
||||||
|
|
||||||
public Table(Integer tableNo) { |
|
||||||
this.tableNo = tableNo; |
|
||||||
} |
|
||||||
|
|
||||||
public TableStyle getTableStyle() { |
|
||||||
return tableStyle; |
|
||||||
} |
|
||||||
|
|
||||||
public void setTableStyle(TableStyle tableStyle) { |
|
||||||
this.tableStyle = tableStyle; |
|
||||||
} |
|
||||||
|
|
||||||
public Class<? extends BaseRowModel> getClazz() { |
|
||||||
return clazz; |
|
||||||
} |
|
||||||
|
|
||||||
public void setClazz(Class<? extends BaseRowModel> clazz) { |
|
||||||
this.clazz = clazz; |
|
||||||
} |
|
||||||
|
|
||||||
public List<List<String>> getHead() { |
|
||||||
return head; |
|
||||||
} |
|
||||||
|
|
||||||
public void setHead(List<List<String>> head) { |
|
||||||
this.head = head; |
|
||||||
} |
|
||||||
|
|
||||||
public int getTableNo() { |
|
||||||
return tableNo; |
|
||||||
} |
|
||||||
|
|
||||||
public void setTableNo(int tableNo) { |
|
||||||
this.tableNo = tableNo; |
|
||||||
} |
|
||||||
} |
|
@ -1,65 +0,0 @@ |
|||||||
package com.alibaba.excel.metadata; |
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.IndexedColors; |
|
||||||
|
|
||||||
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author jipengfei |
|
||||||
* @deprecated please use {@link HorizontalCellStyleStrategy} |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class TableStyle { |
|
||||||
|
|
||||||
/** |
|
||||||
* 表头背景颜色 |
|
||||||
*/ |
|
||||||
private IndexedColors tableHeadBackGroundColor; |
|
||||||
|
|
||||||
/** |
|
||||||
* 表头字体样式 |
|
||||||
*/ |
|
||||||
private Font tableHeadFont; |
|
||||||
|
|
||||||
/** |
|
||||||
* 表格内容字体样式 |
|
||||||
*/ |
|
||||||
private Font tableContentFont; |
|
||||||
|
|
||||||
/** |
|
||||||
* 表格内容背景颜色 |
|
||||||
*/ |
|
||||||
private IndexedColors tableContentBackGroundColor; |
|
||||||
|
|
||||||
public IndexedColors getTableHeadBackGroundColor() { |
|
||||||
return tableHeadBackGroundColor; |
|
||||||
} |
|
||||||
|
|
||||||
public void setTableHeadBackGroundColor(IndexedColors tableHeadBackGroundColor) { |
|
||||||
this.tableHeadBackGroundColor = tableHeadBackGroundColor; |
|
||||||
} |
|
||||||
|
|
||||||
public Font getTableHeadFont() { |
|
||||||
return tableHeadFont; |
|
||||||
} |
|
||||||
|
|
||||||
public void setTableHeadFont(Font tableHeadFont) { |
|
||||||
this.tableHeadFont = tableHeadFont; |
|
||||||
} |
|
||||||
|
|
||||||
public Font getTableContentFont() { |
|
||||||
return tableContentFont; |
|
||||||
} |
|
||||||
|
|
||||||
public void setTableContentFont(Font tableContentFont) { |
|
||||||
this.tableContentFont = tableContentFont; |
|
||||||
} |
|
||||||
|
|
||||||
public IndexedColors getTableContentBackGroundColor() { |
|
||||||
return tableContentBackGroundColor; |
|
||||||
} |
|
||||||
|
|
||||||
public void setTableContentBackGroundColor(IndexedColors tableContentBackGroundColor) { |
|
||||||
this.tableContentBackGroundColor = tableContentBackGroundColor; |
|
||||||
} |
|
||||||
} |
|
@ -1,42 +0,0 @@ |
|||||||
package com.alibaba.excel.metadata; |
|
||||||
|
|
||||||
import java.util.Date; |
|
||||||
|
|
||||||
import com.alibaba.excel.enums.CellDataTypeEnum; |
|
||||||
import com.alibaba.excel.write.metadata.style.WriteCellStyle; |
|
||||||
|
|
||||||
import lombok.Data; |
|
||||||
|
|
||||||
/** |
|
||||||
* TODO |
|
||||||
* |
|
||||||
* @author Jiaju Zhuang |
|
||||||
*/ |
|
||||||
@Data |
|
||||||
public class WriteCellData<T> extends CellData<T> { |
|
||||||
/** |
|
||||||
* Support only when writing.{@link CellDataTypeEnum#DATE} |
|
||||||
*/ |
|
||||||
private Date dateValue; |
|
||||||
/** |
|
||||||
* {@link CellDataTypeEnum#IMAGE} |
|
||||||
*/ |
|
||||||
private ImageData imageDataValue; |
|
||||||
/** |
|
||||||
* rich text.{@link CellDataTypeEnum#RICH_TEXT_STRING} |
|
||||||
*/ |
|
||||||
private RichTextStringData richTextStringDataValue; |
|
||||||
|
|
||||||
/** |
|
||||||
* comment |
|
||||||
*/ |
|
||||||
private CommentData commentData; |
|
||||||
/** |
|
||||||
* hyper link |
|
||||||
*/ |
|
||||||
private HyperlinkData hyperlinkData; |
|
||||||
/** |
|
||||||
* sytle |
|
||||||
*/ |
|
||||||
private WriteCellStyle writeCellStyle; |
|
||||||
} |
|
@ -0,0 +1,76 @@ |
|||||||
|
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
import com.alibaba.excel.enums.CellDataTypeEnum; |
||||||
|
import com.alibaba.excel.metadata.AbstractCell; |
||||||
|
import com.alibaba.excel.util.StringUtils; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* Excel internal cell data. |
||||||
|
* |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class CellData<T> extends AbstractCell { |
||||||
|
/** |
||||||
|
* cell type |
||||||
|
*/ |
||||||
|
private CellDataTypeEnum type; |
||||||
|
/** |
||||||
|
* {@link CellDataTypeEnum#NUMBER} |
||||||
|
*/ |
||||||
|
private BigDecimal numberValue; |
||||||
|
/** |
||||||
|
* {@link CellDataTypeEnum#STRING} and{@link CellDataTypeEnum#ERROR} |
||||||
|
*/ |
||||||
|
private String stringValue; |
||||||
|
/** |
||||||
|
* {@link CellDataTypeEnum#BOOLEAN} |
||||||
|
*/ |
||||||
|
private Boolean booleanValue; |
||||||
|
|
||||||
|
/** |
||||||
|
* The resulting converted data. |
||||||
|
*/ |
||||||
|
private T data; |
||||||
|
|
||||||
|
/** |
||||||
|
* formula |
||||||
|
*/ |
||||||
|
private FormulaData formulaData; |
||||||
|
|
||||||
|
/** |
||||||
|
* Ensure that the object does not appear null |
||||||
|
*/ |
||||||
|
public void checkEmpty() { |
||||||
|
if (type == null) { |
||||||
|
type = CellDataTypeEnum.EMPTY; |
||||||
|
} |
||||||
|
switch (type) { |
||||||
|
case STRING: |
||||||
|
case ERROR: |
||||||
|
if (StringUtils.isEmpty(stringValue)) { |
||||||
|
type = CellDataTypeEnum.EMPTY; |
||||||
|
} |
||||||
|
return; |
||||||
|
case NUMBER: |
||||||
|
if (numberValue == null) { |
||||||
|
type = CellDataTypeEnum.EMPTY; |
||||||
|
} |
||||||
|
return; |
||||||
|
case BOOLEAN: |
||||||
|
if (booleanValue == null) { |
||||||
|
type = CellDataTypeEnum.EMPTY; |
||||||
|
} |
||||||
|
return; |
||||||
|
default: |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -1,9 +1,9 @@ |
|||||||
package com.alibaba.excel.metadata; |
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
import lombok.Data; |
import lombok.Data; |
||||||
|
|
||||||
/** |
/** |
||||||
* TODO |
* comment |
||||||
* |
* |
||||||
* @author Jiaju Zhuang |
* @author Jiaju Zhuang |
||||||
*/ |
*/ |
@ -0,0 +1,28 @@ |
|||||||
|
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* coordinate. |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class CoordinateData { |
||||||
|
/** |
||||||
|
* first row index |
||||||
|
*/ |
||||||
|
private Integer firstRowIndex; |
||||||
|
/** |
||||||
|
* first column index |
||||||
|
*/ |
||||||
|
private Integer firstColumnIndex; |
||||||
|
/** |
||||||
|
* last row index |
||||||
|
*/ |
||||||
|
private Integer lastRowIndex; |
||||||
|
/** |
||||||
|
* last column index |
||||||
|
*/ |
||||||
|
private Integer lastColumnIndex; |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package com.alibaba.excel.metadata; |
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
import lombok.Data; |
import lombok.Data; |
||||||
|
|
@ -0,0 +1,53 @@ |
|||||||
|
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* hyperlink |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class HyperlinkData extends CoordinateData { |
||||||
|
/** |
||||||
|
* Depending on the hyperlink type it can be URL, e-mail, path to a file, etc |
||||||
|
*/ |
||||||
|
private String address; |
||||||
|
/** |
||||||
|
* hyperlink type |
||||||
|
*/ |
||||||
|
private HyperlinkType hyperlinkType; |
||||||
|
|
||||||
|
public enum HyperlinkType { |
||||||
|
/** |
||||||
|
* Not a hyperlink |
||||||
|
*/ |
||||||
|
NONE(-1), |
||||||
|
|
||||||
|
/** |
||||||
|
* Link to an existing file or web page |
||||||
|
*/ |
||||||
|
URL(1), |
||||||
|
|
||||||
|
/** |
||||||
|
* Link to a place in this document |
||||||
|
*/ |
||||||
|
DOCUMENT(2), |
||||||
|
|
||||||
|
/** |
||||||
|
* Link to an E-mail address |
||||||
|
*/ |
||||||
|
EMAIL(3), |
||||||
|
|
||||||
|
/** |
||||||
|
* Link to a file |
||||||
|
*/ |
||||||
|
FILE(4); |
||||||
|
|
||||||
|
public final int value; |
||||||
|
|
||||||
|
HyperlinkType(int value) { |
||||||
|
this.value = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package com.alibaba.excel.metadata; |
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
import lombok.Data; |
import lombok.Data; |
||||||
|
|
@ -0,0 +1,111 @@ |
|||||||
|
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
import com.alibaba.excel.enums.CellDataTypeEnum; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* read cell data |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class ReadCellData<T> extends CellData<T> { |
||||||
|
/** |
||||||
|
* data format. |
||||||
|
*/ |
||||||
|
private DataFormatData dataFormatData; |
||||||
|
|
||||||
|
|
||||||
|
public ReadCellData(CellDataTypeEnum type) { |
||||||
|
super(); |
||||||
|
if (type == null) { |
||||||
|
throw new IllegalArgumentException("Type can not be null"); |
||||||
|
} |
||||||
|
setType(type); |
||||||
|
} |
||||||
|
|
||||||
|
public ReadCellData(T data) { |
||||||
|
super(); |
||||||
|
setData(data); |
||||||
|
} |
||||||
|
|
||||||
|
public ReadCellData(String stringValue) { |
||||||
|
this(CellDataTypeEnum.STRING, stringValue); |
||||||
|
} |
||||||
|
|
||||||
|
public ReadCellData(CellDataTypeEnum type, String stringValue) { |
||||||
|
super(); |
||||||
|
if (type != CellDataTypeEnum.STRING && type != CellDataTypeEnum.ERROR) { |
||||||
|
throw new IllegalArgumentException("Only support CellDataTypeEnum.STRING and CellDataTypeEnum.ERROR"); |
||||||
|
} |
||||||
|
if (stringValue == null) { |
||||||
|
throw new IllegalArgumentException("StringValue can not be null"); |
||||||
|
} |
||||||
|
setType(type); |
||||||
|
setStringValue(stringValue); |
||||||
|
} |
||||||
|
|
||||||
|
public ReadCellData(BigDecimal numberValue) { |
||||||
|
super(); |
||||||
|
if (numberValue == null) { |
||||||
|
throw new IllegalArgumentException("DoubleValue can not be null"); |
||||||
|
} |
||||||
|
setType(CellDataTypeEnum.NUMBER); |
||||||
|
setNumberValue(numberValue); |
||||||
|
} |
||||||
|
|
||||||
|
public ReadCellData(Boolean booleanValue) { |
||||||
|
super(); |
||||||
|
if (booleanValue == null) { |
||||||
|
throw new IllegalArgumentException("BooleanValue can not be null"); |
||||||
|
} |
||||||
|
setType(CellDataTypeEnum.BOOLEAN); |
||||||
|
setBooleanValue(booleanValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static ReadCellData<?> newEmptyInstance() { |
||||||
|
return newEmptyInstance(null, null); |
||||||
|
} |
||||||
|
|
||||||
|
public static ReadCellData<?> newEmptyInstance(Integer rowIndex, Integer columnIndex) { |
||||||
|
ReadCellData<?> cellData = new ReadCellData<>(CellDataTypeEnum.EMPTY); |
||||||
|
cellData.setRowIndex(rowIndex); |
||||||
|
cellData.setColumnIndex(columnIndex); |
||||||
|
return cellData; |
||||||
|
} |
||||||
|
|
||||||
|
public static ReadCellData<?> newInstance(Boolean booleanValue) { |
||||||
|
return newInstance(booleanValue, null, null); |
||||||
|
} |
||||||
|
|
||||||
|
public static ReadCellData<?> newInstance(Boolean booleanValue, Integer rowIndex, Integer columnIndex) { |
||||||
|
ReadCellData<?> cellData = new ReadCellData<>(booleanValue); |
||||||
|
cellData.setRowIndex(rowIndex); |
||||||
|
cellData.setColumnIndex(columnIndex); |
||||||
|
return cellData; |
||||||
|
} |
||||||
|
|
||||||
|
public static ReadCellData<?> newInstance(String stringValue, Integer rowIndex, Integer columnIndex) { |
||||||
|
ReadCellData<?> cellData = new ReadCellData<>(stringValue); |
||||||
|
cellData.setRowIndex(rowIndex); |
||||||
|
cellData.setColumnIndex(columnIndex); |
||||||
|
return cellData; |
||||||
|
} |
||||||
|
|
||||||
|
public static ReadCellData<?> newInstance(BigDecimal numberValue, Integer rowIndex, Integer columnIndex) { |
||||||
|
ReadCellData<?> cellData = new ReadCellData<>(numberValue); |
||||||
|
cellData.setRowIndex(rowIndex); |
||||||
|
cellData.setColumnIndex(columnIndex); |
||||||
|
return cellData; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public ReadCellData<Object> clone(){ |
||||||
|
return new ReadCellData<>(""); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package com.alibaba.excel.metadata; |
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
import java.util.List; |
import java.util.List; |
||||||
|
|
@ -0,0 +1,101 @@ |
|||||||
|
package com.alibaba.excel.metadata.data; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import com.alibaba.excel.enums.CellDataTypeEnum; |
||||||
|
import com.alibaba.excel.util.ListUtils; |
||||||
|
import com.alibaba.excel.write.metadata.style.WriteCellStyle; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* wirte cell data |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class WriteCellData<T> extends CellData<T> { |
||||||
|
/** |
||||||
|
* Support only when writing.{@link CellDataTypeEnum#DATE} |
||||||
|
*/ |
||||||
|
private Date dateValue; |
||||||
|
/** |
||||||
|
* rich text.{@link CellDataTypeEnum#RICH_TEXT_STRING} |
||||||
|
*/ |
||||||
|
private RichTextStringData richTextStringDataValue; |
||||||
|
/** |
||||||
|
* image |
||||||
|
*/ |
||||||
|
private List<ImageData> imageDataList; |
||||||
|
/** |
||||||
|
* comment |
||||||
|
*/ |
||||||
|
private CommentData commentData; |
||||||
|
/** |
||||||
|
* hyper link |
||||||
|
*/ |
||||||
|
private HyperlinkData hyperlinkData; |
||||||
|
/** |
||||||
|
* sytle |
||||||
|
*/ |
||||||
|
private WriteCellStyle writeCellStyle; |
||||||
|
|
||||||
|
|
||||||
|
public WriteCellData(String stringValue) { |
||||||
|
this(CellDataTypeEnum.STRING, stringValue); |
||||||
|
} |
||||||
|
|
||||||
|
public WriteCellData(CellDataTypeEnum type, String stringValue) { |
||||||
|
super(); |
||||||
|
if (type != CellDataTypeEnum.STRING && type != CellDataTypeEnum.ERROR) { |
||||||
|
throw new IllegalArgumentException("Only support CellDataTypeEnum.STRING and CellDataTypeEnum.ERROR"); |
||||||
|
} |
||||||
|
if (stringValue == null) { |
||||||
|
throw new IllegalArgumentException("StringValue can not be null"); |
||||||
|
} |
||||||
|
setType(type); |
||||||
|
setStringValue(stringValue); |
||||||
|
} |
||||||
|
|
||||||
|
public WriteCellData(BigDecimal numberValue) { |
||||||
|
super(); |
||||||
|
if (numberValue == null) { |
||||||
|
throw new IllegalArgumentException("DoubleValue can not be null"); |
||||||
|
} |
||||||
|
setType(CellDataTypeEnum.NUMBER); |
||||||
|
setNumberValue(numberValue); |
||||||
|
} |
||||||
|
|
||||||
|
public WriteCellData(Boolean booleanValue) { |
||||||
|
super(); |
||||||
|
if (booleanValue == null) { |
||||||
|
throw new IllegalArgumentException("BooleanValue can not be null"); |
||||||
|
} |
||||||
|
setType(CellDataTypeEnum.BOOLEAN); |
||||||
|
setBooleanValue(booleanValue); |
||||||
|
} |
||||||
|
|
||||||
|
public WriteCellData(Date dateValue) { |
||||||
|
super(); |
||||||
|
if (dateValue == null) { |
||||||
|
throw new IllegalArgumentException("DateValue can not be null"); |
||||||
|
} |
||||||
|
setType(CellDataTypeEnum.DATE); |
||||||
|
this.dateValue = dateValue; |
||||||
|
} |
||||||
|
|
||||||
|
public WriteCellData(byte[] image) { |
||||||
|
super(); |
||||||
|
if (image == null) { |
||||||
|
throw new IllegalArgumentException("Image can not be null"); |
||||||
|
} |
||||||
|
setType(CellDataTypeEnum.EMPTY); |
||||||
|
this.imageDataList= ListUtils.newArrayList(); |
||||||
|
ImageData imageData = new ImageData(); |
||||||
|
imageData.setImage(image); |
||||||
|
imageDataList.add(imageData); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -1,58 +0,0 @@ |
|||||||
package com.alibaba.excel.parameter; |
|
||||||
|
|
||||||
import com.alibaba.excel.support.ExcelTypeEnum; |
|
||||||
|
|
||||||
import java.io.InputStream; |
|
||||||
|
|
||||||
/** |
|
||||||
* |
|
||||||
* @author jipengfei |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class AnalysisParam { |
|
||||||
|
|
||||||
/** |
|
||||||
* @see ExcelTypeEnum |
|
||||||
*/ |
|
||||||
private ExcelTypeEnum excelTypeEnum; |
|
||||||
|
|
||||||
/** |
|
||||||
* the POI filesystem that contains the Workbook stream |
|
||||||
*/ |
|
||||||
private InputStream in; |
|
||||||
|
|
||||||
/** |
|
||||||
* user defined param to listener use |
|
||||||
*/ |
|
||||||
private Object customContent; |
|
||||||
|
|
||||||
public AnalysisParam(InputStream in, ExcelTypeEnum excelTypeEnum, Object customContent) { |
|
||||||
this.in = in; |
|
||||||
this.excelTypeEnum = excelTypeEnum; |
|
||||||
this.customContent = customContent; |
|
||||||
} |
|
||||||
|
|
||||||
public ExcelTypeEnum getExcelTypeEnum() { |
|
||||||
return excelTypeEnum; |
|
||||||
} |
|
||||||
|
|
||||||
public void setExcelTypeEnum(ExcelTypeEnum excelTypeEnum) { |
|
||||||
this.excelTypeEnum = excelTypeEnum; |
|
||||||
} |
|
||||||
|
|
||||||
public Object getCustomContent() { |
|
||||||
return customContent; |
|
||||||
} |
|
||||||
|
|
||||||
public void setCustomContent(Object customContent) { |
|
||||||
this.customContent = customContent; |
|
||||||
} |
|
||||||
|
|
||||||
public InputStream getIn() { |
|
||||||
return in; |
|
||||||
} |
|
||||||
|
|
||||||
public void setIn(InputStream in) { |
|
||||||
this.in = in; |
|
||||||
} |
|
||||||
} |
|
@ -1,71 +0,0 @@ |
|||||||
package com.alibaba.excel.parameter; |
|
||||||
|
|
||||||
import java.io.OutputStream; |
|
||||||
|
|
||||||
import com.alibaba.excel.support.ExcelTypeEnum; |
|
||||||
|
|
||||||
/** |
|
||||||
* Created by jipengfei on 17/2/19. |
|
||||||
* |
|
||||||
* @author jipengfei |
|
||||||
* @deprecated please use {@link com.alibaba.excel.write.builder.ExcelWriterBuilder} build ExcelWriter |
|
||||||
*/ |
|
||||||
@Deprecated |
|
||||||
public class GenerateParam { |
|
||||||
|
|
||||||
private OutputStream outputStream; |
|
||||||
|
|
||||||
private String sheetName; |
|
||||||
|
|
||||||
private Class clazz; |
|
||||||
|
|
||||||
private ExcelTypeEnum type; |
|
||||||
|
|
||||||
private boolean needHead = true; |
|
||||||
|
|
||||||
public GenerateParam(String sheetName, Class clazz, OutputStream outputStream) { |
|
||||||
this.outputStream = outputStream; |
|
||||||
this.sheetName = sheetName; |
|
||||||
this.clazz = clazz; |
|
||||||
} |
|
||||||
|
|
||||||
public OutputStream getOutputStream() { |
|
||||||
return outputStream; |
|
||||||
} |
|
||||||
|
|
||||||
public void setOutputStream(OutputStream outputStream) { |
|
||||||
this.outputStream = outputStream; |
|
||||||
} |
|
||||||
|
|
||||||
public String getSheetName() { |
|
||||||
return sheetName; |
|
||||||
} |
|
||||||
|
|
||||||
public void setSheetName(String sheetName) { |
|
||||||
this.sheetName = sheetName; |
|
||||||
} |
|
||||||
|
|
||||||
public Class getClazz() { |
|
||||||
return clazz; |
|
||||||
} |
|
||||||
|
|
||||||
public void setClazz(Class clazz) { |
|
||||||
this.clazz = clazz; |
|
||||||
} |
|
||||||
|
|
||||||
public ExcelTypeEnum getType() { |
|
||||||
return type; |
|
||||||
} |
|
||||||
|
|
||||||
public void setType(ExcelTypeEnum type) { |
|
||||||
this.type = type; |
|
||||||
} |
|
||||||
|
|
||||||
public boolean isNeedHead() { |
|
||||||
return needHead; |
|
||||||
} |
|
||||||
|
|
||||||
public void setNeedHead(boolean needHead) { |
|
||||||
this.needHead = needHead; |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,46 @@ |
|||||||
|
package com.alibaba.excel.util; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import com.alibaba.excel.metadata.data.ImageData.ImageType; |
||||||
|
|
||||||
|
/** |
||||||
|
* file type utils |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
public class FileTypeUtils { |
||||||
|
|
||||||
|
private static final char[] DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', |
||||||
|
'f'}; |
||||||
|
private static final int IMAGE_TYPE_MARK_LENGTH = 28; |
||||||
|
|
||||||
|
private static final Map<String, ImageType> FILE_TYPE_MAP; |
||||||
|
|
||||||
|
static { |
||||||
|
FILE_TYPE_MAP = new HashMap<>(); |
||||||
|
FILE_TYPE_MAP.put("ffd8ff", ImageType.PICTURE_TYPE_JPEG); |
||||||
|
FILE_TYPE_MAP.put("89504e47", ImageType.PICTURE_TYPE_PNG); |
||||||
|
} |
||||||
|
|
||||||
|
public static ImageType getImageType(byte[] image) { |
||||||
|
if (image == null || image.length <= IMAGE_TYPE_MARK_LENGTH) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
byte[] typeMarkByte = new byte[IMAGE_TYPE_MARK_LENGTH]; |
||||||
|
System.arraycopy(image, 0, typeMarkByte, 0, IMAGE_TYPE_MARK_LENGTH); |
||||||
|
return FILE_TYPE_MAP.get(encodeHexStr(typeMarkByte)); |
||||||
|
} |
||||||
|
|
||||||
|
private static String encodeHexStr(byte[] data) { |
||||||
|
final int len = data.length; |
||||||
|
final char[] out = new char[len << 1]; |
||||||
|
// two characters from the hex value.
|
||||||
|
for (int i = 0, j = 0; i < len; i++) { |
||||||
|
out[j++] = DIGITS[(0xF0 & data[i]) >>> 4]; |
||||||
|
out[j++] = DIGITS[0x0F & data[i]]; |
||||||
|
} |
||||||
|
return new String(out); |
||||||
|
} |
||||||
|
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue