修改完成部分图片等导入
This commit is contained in:
parent
332d2de010
commit
de4ec6d400
2
lombok.config
Normal file
2
lombok.config
Normal file
@ -0,0 +1,2 @@
|
||||
lombok.toString.callSuper = CALL
|
||||
lombok.equalsAndHashCode.callSuper= CALL
|
@ -37,13 +37,17 @@ public enum CellDataTypeEnum {
|
||||
*/
|
||||
ERROR,
|
||||
/**
|
||||
* Images are currently supported only when writing
|
||||
* image. Support only when writing.
|
||||
*/
|
||||
IMAGE,
|
||||
/**
|
||||
* date.Support only when writing.
|
||||
*/
|
||||
DATE,
|
||||
/**
|
||||
* rich text string.Support only when writing.
|
||||
*/
|
||||
RICH_TEXT_STRING,
|
||||
;
|
||||
|
||||
private static final Map<String, CellDataTypeEnum> TYPE_ROUTING_MAP = new HashMap<String, CellDataTypeEnum>(16);
|
||||
|
@ -4,6 +4,7 @@ import com.alibaba.excel.metadata.CellData;
|
||||
import com.alibaba.excel.metadata.property.ExcelContentProperty;
|
||||
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -12,8 +13,7 @@ import lombok.Setter;
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Data
|
||||
public class ExcelDataConvertException extends RuntimeException {
|
||||
/**
|
||||
* NotNull.
|
||||
|
@ -1,10 +1,13 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* cell
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
**/
|
||||
@Data
|
||||
public class AbstractCell implements Cell {
|
||||
/**
|
||||
* Row index
|
||||
@ -14,20 +17,4 @@ public class AbstractCell implements Cell {
|
||||
* Column index
|
||||
*/
|
||||
private Integer columnIndex;
|
||||
|
||||
public Integer getRowIndex() {
|
||||
return rowIndex;
|
||||
}
|
||||
|
||||
public void setRowIndex(Integer rowIndex) {
|
||||
this.rowIndex = rowIndex;
|
||||
}
|
||||
|
||||
public Integer getColumnIndex() {
|
||||
return columnIndex;
|
||||
}
|
||||
|
||||
public void setColumnIndex(Integer columnIndex) {
|
||||
this.columnIndex = columnIndex;
|
||||
}
|
||||
}
|
||||
|
@ -6,11 +6,16 @@ import java.util.Map;
|
||||
|
||||
import com.alibaba.excel.converters.Converter;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* Write/read holder
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public abstract class AbstractHolder implements ConfigurationHolder {
|
||||
/**
|
||||
* Record whether it's new or from cache
|
||||
@ -71,46 +76,6 @@ public abstract class AbstractHolder implements ConfigurationHolder {
|
||||
|
||||
}
|
||||
|
||||
public Boolean getNewInitialization() {
|
||||
return newInitialization;
|
||||
}
|
||||
|
||||
public void setNewInitialization(Boolean newInitialization) {
|
||||
this.newInitialization = newInitialization;
|
||||
}
|
||||
|
||||
public List<List<String>> getHead() {
|
||||
return head;
|
||||
}
|
||||
|
||||
public void setHead(List<List<String>> head) {
|
||||
this.head = head;
|
||||
}
|
||||
|
||||
public Class getClazz() {
|
||||
return clazz;
|
||||
}
|
||||
|
||||
public void setClazz(Class clazz) {
|
||||
this.clazz = clazz;
|
||||
}
|
||||
|
||||
public GlobalConfiguration getGlobalConfiguration() {
|
||||
return globalConfiguration;
|
||||
}
|
||||
|
||||
public void setGlobalConfiguration(GlobalConfiguration globalConfiguration) {
|
||||
this.globalConfiguration = globalConfiguration;
|
||||
}
|
||||
|
||||
public Map<String, Converter<?>> getConverterMap() {
|
||||
return converterMap;
|
||||
}
|
||||
|
||||
public void setConverterMap(Map<String, Converter<?>> converterMap) {
|
||||
this.converterMap = converterMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Converter<?>> converterMap() {
|
||||
return getConverterMap();
|
||||
|
@ -1,14 +1,18 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.alibaba.excel.annotation.write.style.ImagePosition;
|
||||
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.Getter;
|
||||
import lombok.Setter;
|
||||
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.
|
||||
@ -17,8 +21,7 @@ import lombok.Setter;
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Data
|
||||
public class CellData<T> extends AbstractCell {
|
||||
private CellDataTypeEnum type;
|
||||
/**
|
||||
@ -33,52 +36,20 @@ public class CellData<T> extends AbstractCell {
|
||||
* {@link CellDataTypeEnum#BOOLEAN}
|
||||
*/
|
||||
private Boolean booleanValue;
|
||||
private Boolean formula;
|
||||
private String formulaValue;
|
||||
private byte[] imageValue;
|
||||
|
||||
/**
|
||||
* Keep the information of image position in annotation.
|
||||
*/
|
||||
private ImagePositionProperty imagePositionProperty;
|
||||
|
||||
/**
|
||||
* It will be set true when using annotation to set the image's position.
|
||||
*/
|
||||
private Boolean useImagePositionProperty = false;
|
||||
/**
|
||||
* Support only when writing.
|
||||
*/
|
||||
private Date dateValue;
|
||||
/**
|
||||
* The number formatting.
|
||||
*/
|
||||
private Short dataFormat;
|
||||
/**
|
||||
* The string of number formatting.
|
||||
*/
|
||||
private String dataFormatString;
|
||||
/**
|
||||
* The resulting converted data.
|
||||
*/
|
||||
private T data;
|
||||
|
||||
public CellData(CellData<T> other) {
|
||||
this.type = other.type;
|
||||
this.numberValue = other.numberValue;
|
||||
this.stringValue = other.stringValue;
|
||||
this.booleanValue = other.booleanValue;
|
||||
this.formula = other.formula;
|
||||
this.formulaValue = other.formulaValue;
|
||||
this.imageValue = other.imageValue;
|
||||
this.imagePositionProperty = other.imagePositionProperty;
|
||||
this.useImagePositionProperty = other.useImagePositionProperty;
|
||||
this.dataFormat = other.dataFormat;
|
||||
this.dataFormatString = other.dataFormatString;
|
||||
this.data = other.data;
|
||||
setRowIndex(other.getRowIndex());
|
||||
setColumnIndex(other.getColumnIndex());
|
||||
}
|
||||
/**
|
||||
* formula
|
||||
*/
|
||||
private FormulaData formulaData;
|
||||
/**
|
||||
* data format
|
||||
*/
|
||||
private DataFormat dataFormat;
|
||||
|
||||
public CellData() {}
|
||||
|
||||
@ -86,12 +57,6 @@ public class CellData<T> extends AbstractCell {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public CellData(T data, String formulaValue) {
|
||||
this.data = data;
|
||||
this.formula = Boolean.TRUE;
|
||||
this.formulaValue = formulaValue;
|
||||
}
|
||||
|
||||
public CellData(String stringValue) {
|
||||
this(CellDataTypeEnum.STRING, stringValue);
|
||||
}
|
||||
@ -105,7 +70,6 @@ public class CellData<T> extends AbstractCell {
|
||||
}
|
||||
this.type = type;
|
||||
this.stringValue = stringValue;
|
||||
this.formula = Boolean.FALSE;
|
||||
}
|
||||
|
||||
public CellData(BigDecimal numberValue) {
|
||||
@ -114,7 +78,6 @@ public class CellData<T> extends AbstractCell {
|
||||
}
|
||||
this.type = CellDataTypeEnum.NUMBER;
|
||||
this.numberValue = numberValue;
|
||||
this.formula = Boolean.FALSE;
|
||||
}
|
||||
|
||||
public CellData(byte[] imageValue) {
|
||||
@ -123,7 +86,6 @@ public class CellData<T> extends AbstractCell {
|
||||
}
|
||||
this.type = CellDataTypeEnum.IMAGE;
|
||||
this.imageValue = imageValue;
|
||||
this.formula = Boolean.FALSE;
|
||||
}
|
||||
|
||||
public CellData(byte[] imageValue, ImagePosition imagePosition) {
|
||||
@ -146,7 +108,6 @@ public class CellData<T> extends AbstractCell {
|
||||
}
|
||||
this.type = CellDataTypeEnum.BOOLEAN;
|
||||
this.booleanValue = booleanValue;
|
||||
this.formula = Boolean.FALSE;
|
||||
}
|
||||
|
||||
public CellData(Date dateValue) {
|
||||
@ -158,7 +119,6 @@ public class CellData<T> extends AbstractCell {
|
||||
this.formula = Boolean.FALSE;
|
||||
}
|
||||
|
||||
|
||||
public CellData(CellDataTypeEnum type) {
|
||||
if (type == null) {
|
||||
throw new IllegalArgumentException("Type can not be null");
|
||||
@ -230,39 +190,4 @@ public class CellData<T> extends AbstractCell {
|
||||
return cellData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (type == null) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
switch (type) {
|
||||
case NUMBER:
|
||||
if (numberValue == null) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
return numberValue.toString();
|
||||
case BOOLEAN:
|
||||
if (booleanValue == null) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
return booleanValue.toString();
|
||||
case DIRECT_STRING:
|
||||
case STRING:
|
||||
case ERROR:
|
||||
return stringValue;
|
||||
case DATE:
|
||||
if (dateValue == null) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
return dateValue.toString();
|
||||
case IMAGE:
|
||||
if (imageValue == null) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
return "image[" + imageValue.length + "]";
|
||||
default:
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
139
src/main/java/com/alibaba/excel/metadata/ClientAnchorData.java
Normal file
139
src/main/java/com/alibaba/excel/metadata/ClientAnchorData.java
Normal file
@ -0,0 +1,139 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import lombok.Data;
|
||||
import org.apache.poi.ss.usermodel.ClientAnchor;
|
||||
import org.apache.poi.util.Internal;
|
||||
|
||||
/**
|
||||
* A client anchor is attached to an excel worksheet. It anchors against
|
||||
* absolute coordinates, a top-left cell and fixed height and width, or
|
||||
* a top-left and bottom-right cell, depending on the {@link ClientAnchorData.AnchorType}:
|
||||
* <ol>
|
||||
* <li> {@link ClientAnchor.AnchorType#DONT_MOVE_AND_RESIZE} == absolute top-left coordinates and width/height, no
|
||||
* cell references
|
||||
* <li> {@link ClientAnchor.AnchorType#MOVE_DONT_RESIZE} == fixed top-left cell reference, absolute width/height
|
||||
* <li> {@link ClientAnchor.AnchorType#MOVE_AND_RESIZE} == fixed top-left and bottom-right cell references, dynamic
|
||||
* width/height
|
||||
* </ol>
|
||||
* Note this class only reports the current values for possibly calculated positions and sizes.
|
||||
* If the sheet row/column sizes or positions shift, this needs updating via external calculations.
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public class ClientAnchorData {
|
||||
|
||||
/**
|
||||
* The x coordinate within the first cell.
|
||||
*/
|
||||
private int dx1;
|
||||
|
||||
/**
|
||||
* The y coordinate within the first cell.
|
||||
*/
|
||||
private int dy1;
|
||||
|
||||
/**
|
||||
* The x coordinate within the second cell.
|
||||
*/
|
||||
private int dx2;
|
||||
|
||||
/**
|
||||
* The y coordinate within the second cell
|
||||
*/
|
||||
private int dy2;
|
||||
|
||||
/**
|
||||
* 0-based column of the first cell.
|
||||
*/
|
||||
private short col1;
|
||||
|
||||
/**
|
||||
* 0-based row of the first cell.
|
||||
*/
|
||||
private int row1;
|
||||
|
||||
/**
|
||||
* 0-based column of the second cell.
|
||||
*/
|
||||
private short col2;
|
||||
|
||||
/**
|
||||
* 0-based row of the second cell.
|
||||
*/
|
||||
private int row2;
|
||||
/**
|
||||
* anchor type
|
||||
*/
|
||||
private AnchorType anchorType;
|
||||
|
||||
public enum AnchorType {
|
||||
/**
|
||||
* Move and Resize With Anchor Cells (0)
|
||||
* <p>
|
||||
* Specifies that the current drawing shall move and
|
||||
* resize to maintain its row and column anchors (i.e. the
|
||||
* object is anchored to the actual from and to row and column)
|
||||
* </p>
|
||||
*/
|
||||
MOVE_AND_RESIZE(0),
|
||||
|
||||
/**
|
||||
* Don't Move but do Resize With Anchor Cells (1)
|
||||
* <p>
|
||||
* Specifies that the current drawing shall not move with its
|
||||
* row and column, but should be resized. This option is not normally
|
||||
* used, but is included for completeness.
|
||||
* </p>
|
||||
* Note: Excel has no setting for this combination, nor does the ECMA standard.
|
||||
*/
|
||||
DONT_MOVE_DO_RESIZE(1),
|
||||
|
||||
/**
|
||||
* Move With Cells but Do Not Resize (2)
|
||||
* <p>
|
||||
* Specifies that the current drawing shall move with its
|
||||
* row and column (i.e. the object is anchored to the
|
||||
* actual from row and column), but that the size shall remain absolute.
|
||||
* </p>
|
||||
* <p>
|
||||
* If additional rows/columns are added between the from and to locations of the drawing,
|
||||
* the drawing shall move its to anchors as needed to maintain this same absolute size.
|
||||
* </p>
|
||||
*/
|
||||
MOVE_DONT_RESIZE(2),
|
||||
|
||||
/**
|
||||
* Do Not Move or Resize With Underlying Rows/Columns (3)
|
||||
* <p>
|
||||
* Specifies that the current start and end positions shall
|
||||
* be maintained with respect to the distances from the
|
||||
* absolute start point of the worksheet.
|
||||
* </p>
|
||||
* <p>
|
||||
* If additional rows/columns are added before the
|
||||
* drawing, the drawing shall move its anchors as needed
|
||||
* to maintain this same absolute position.
|
||||
* </p>
|
||||
*/
|
||||
DONT_MOVE_AND_RESIZE(3);
|
||||
|
||||
public final short value;
|
||||
|
||||
// disallow non-sequential enum instance creation
|
||||
private AnchorType(int value) {
|
||||
this.value = (short)value;
|
||||
}
|
||||
|
||||
/**
|
||||
* return the AnchorType corresponding to the code
|
||||
*
|
||||
* @param value the anchor type code
|
||||
* @return the anchor type enum
|
||||
*/
|
||||
@Internal
|
||||
public static ClientAnchorData.AnchorType byId(int value) {
|
||||
return values()[value];
|
||||
}
|
||||
}
|
||||
}
|
28
src/main/java/com/alibaba/excel/metadata/CommentData.java
Normal file
28
src/main/java/com/alibaba/excel/metadata/CommentData.java
Normal file
@ -0,0 +1,28 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public class CommentData {
|
||||
/**
|
||||
* Row index
|
||||
*/
|
||||
private Integer rowIndex;
|
||||
/**
|
||||
* Column index
|
||||
*/
|
||||
private Integer columnIndex;
|
||||
/**
|
||||
* Name of the original comment author
|
||||
*/
|
||||
private String author;
|
||||
/**
|
||||
* rich text string
|
||||
*/
|
||||
private RichTextStringData richTextStringData;
|
||||
}
|
20
src/main/java/com/alibaba/excel/metadata/DataFormat.java
Normal file
20
src/main/java/com/alibaba/excel/metadata/DataFormat.java
Normal file
@ -0,0 +1,20 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* data format
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public class DataFormat {
|
||||
/**
|
||||
* index
|
||||
*/
|
||||
private Short index;
|
||||
/**
|
||||
* format
|
||||
*/
|
||||
private String format;
|
||||
}
|
16
src/main/java/com/alibaba/excel/metadata/FormulaData.java
Normal file
16
src/main/java/com/alibaba/excel/metadata/FormulaData.java
Normal file
@ -0,0 +1,16 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* formula
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public class FormulaData {
|
||||
/**
|
||||
* formula
|
||||
*/
|
||||
private String formulaValue;
|
||||
}
|
10
src/main/java/com/alibaba/excel/metadata/HyperlinkData.java
Normal file
10
src/main/java/com/alibaba/excel/metadata/HyperlinkData.java
Normal file
@ -0,0 +1,10 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
public class HyperlinkData {
|
||||
|
||||
}
|
58
src/main/java/com/alibaba/excel/metadata/ImageData.java
Normal file
58
src/main/java/com/alibaba/excel/metadata/ImageData.java
Normal file
@ -0,0 +1,58 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* image
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public class ImageData extends ClientAnchorData {
|
||||
|
||||
/**
|
||||
* image
|
||||
*/
|
||||
private byte[] image;
|
||||
|
||||
/**
|
||||
* image type
|
||||
*/
|
||||
private ImageType imageType;
|
||||
|
||||
public enum ImageType {
|
||||
/**
|
||||
* Extended windows meta file
|
||||
*/
|
||||
PICTURE_TYPE_EMF(2),
|
||||
/**
|
||||
* Windows Meta File
|
||||
*/
|
||||
PICTURE_TYPE_WMF(3),
|
||||
/**
|
||||
* Mac PICT format
|
||||
*/
|
||||
PICTURE_TYPE_PICT(4),
|
||||
/**
|
||||
* JPEG format
|
||||
*/
|
||||
PICTURE_TYPE_JPEG(5),
|
||||
/**
|
||||
* PNG format
|
||||
*/
|
||||
PICTURE_TYPE_PNG(6),
|
||||
/**
|
||||
* Device independent bitmap
|
||||
*/
|
||||
PICTURE_TYPE_DIB(7),
|
||||
|
||||
;
|
||||
|
||||
public final int value;
|
||||
|
||||
ImageType(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
13
src/main/java/com/alibaba/excel/metadata/ReadCellData.java
Normal file
13
src/main/java/com/alibaba/excel/metadata/ReadCellData.java
Normal file
@ -0,0 +1,13 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public class ReadCellData<T> extends CellData<T>{
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.alibaba.excel.metadata;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.excel.util.ListUtils;
|
||||
import com.alibaba.excel.write.metadata.style.WriteFont;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class RichTextStringData {
|
||||
private String textString;
|
||||
private WriteFont writeFont;
|
||||
private List<IntervalFont> intervalFontList;
|
||||
|
||||
public RichTextStringData(String textString) {
|
||||
this.textString = textString;
|
||||
}
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public static class IntervalFont {
|
||||
private Integer startIndex;
|
||||
private Integer endIndex;
|
||||
private WriteFont writeFont;
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies a font to the specified characters of a string.
|
||||
*
|
||||
* @param startIndex The start index to apply the font to (inclusive)
|
||||
* @param endIndex The end index to apply to font to (exclusive)
|
||||
* @param writeFont The font to use.
|
||||
*/
|
||||
public void applyFont(int startIndex, int endIndex, WriteFont writeFont) {
|
||||
if (intervalFontList == null) {
|
||||
intervalFontList = ListUtils.newArrayList();
|
||||
}
|
||||
intervalFontList.add(new IntervalFont(startIndex, endIndex, writeFont));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the font of the entire string.
|
||||
*
|
||||
* @param writeFont The font to use.
|
||||
*/
|
||||
public void applyFont(WriteFont writeFont) {
|
||||
this.writeFont = writeFont;
|
||||
}
|
||||
|
||||
}
|
42
src/main/java/com/alibaba/excel/metadata/WriteCellData.java
Normal file
42
src/main/java/com/alibaba/excel/metadata/WriteCellData.java
Normal file
@ -0,0 +1,42 @@
|
||||
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;
|
||||
}
|
@ -1,19 +1,13 @@
|
||||
package com.alibaba.excel.metadata.property;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.format.DateTimeFormat;
|
||||
import com.alibaba.excel.annotation.format.NumberFormat;
|
||||
@ -27,11 +21,17 @@ import com.alibaba.excel.util.ClassUtils;
|
||||
import com.alibaba.excel.util.StringUtils;
|
||||
import com.alibaba.excel.write.metadata.holder.AbstractWriteHolder;
|
||||
|
||||
import lombok.Data;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Define the header attribute of excel
|
||||
*
|
||||
* @author jipengfei
|
||||
*/
|
||||
@Data
|
||||
public class ExcelHeadProperty {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelHeadProperty.class);
|
||||
@ -64,7 +64,7 @@ public class ExcelHeadProperty {
|
||||
*/
|
||||
private Map<String, Field> ignoreMap;
|
||||
|
||||
public ExcelHeadProperty(Holder holder, Class headClazz, List<List<String>> head, Boolean convertAllField) {
|
||||
public ExcelHeadProperty(Holder holder, Class headClazz, List<List<String>> head, Boolean convertAllFiled) {
|
||||
this.headClazz = headClazz;
|
||||
headMap = new TreeMap<Integer, Head>();
|
||||
contentPropertyMap = new TreeMap<Integer, ExcelContentProperty>();
|
||||
@ -87,7 +87,7 @@ public class ExcelHeadProperty {
|
||||
headKind = HeadKindEnum.STRING;
|
||||
}
|
||||
// convert headClazz to head
|
||||
initColumnProperties(holder, convertAllField);
|
||||
initColumnProperties(holder, convertAllFiled);
|
||||
|
||||
initHeadRowNumber();
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
@ -115,7 +115,7 @@ public class ExcelHeadProperty {
|
||||
}
|
||||
}
|
||||
|
||||
private void initColumnProperties(Holder holder, Boolean convertAllField) {
|
||||
private void initColumnProperties(Holder holder, Boolean convertAllFiled) {
|
||||
if (headClazz == null) {
|
||||
return;
|
||||
}
|
||||
@ -124,9 +124,9 @@ public class ExcelHeadProperty {
|
||||
Map<Integer, Field> indexFiledMap = new TreeMap<Integer, Field>();
|
||||
|
||||
boolean needIgnore = (holder instanceof AbstractWriteHolder) && (
|
||||
!CollectionUtils.isEmpty(((AbstractWriteHolder) holder).getExcludeColumnFiledNames()) || !CollectionUtils
|
||||
!CollectionUtils.isEmpty(((AbstractWriteHolder) holder).getExcludeColumnFieldNames()) || !CollectionUtils
|
||||
.isEmpty(((AbstractWriteHolder) holder).getExcludeColumnIndexes()) || !CollectionUtils
|
||||
.isEmpty(((AbstractWriteHolder) holder).getIncludeColumnFiledNames()) || !CollectionUtils
|
||||
.isEmpty(((AbstractWriteHolder) holder).getIncludeColumnFieldNames()) || !CollectionUtils
|
||||
.isEmpty(((AbstractWriteHolder) holder).getIncludeColumnIndexes()));
|
||||
ClassUtils.declaredFields(headClazz, sortedAllFiledMap, indexFiledMap, ignoreMap, convertAllFiled, needIgnore,
|
||||
holder);
|
||||
@ -134,6 +134,7 @@ public class ExcelHeadProperty {
|
||||
for (Map.Entry<Integer, Field> entry : sortedAllFiledMap.entrySet()) {
|
||||
initOneColumnProperty(entry.getKey(), entry.getValue(), indexFiledMap.containsKey(entry.getKey()));
|
||||
}
|
||||
headKind = HeadKindEnum.CLASS;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -182,63 +183,8 @@ public class ExcelHeadProperty {
|
||||
fieldNameContentPropertyMap.put(field.getName(), excelContentProperty);
|
||||
}
|
||||
|
||||
public Class getHeadClazz() {
|
||||
return headClazz;
|
||||
}
|
||||
|
||||
public void setHeadClazz(Class headClazz) {
|
||||
this.headClazz = headClazz;
|
||||
}
|
||||
|
||||
public HeadKindEnum getHeadKind() {
|
||||
return headKind;
|
||||
}
|
||||
|
||||
public void setHeadKind(HeadKindEnum headKind) {
|
||||
this.headKind = headKind;
|
||||
}
|
||||
|
||||
public boolean hasHead() {
|
||||
return headKind != HeadKindEnum.NONE;
|
||||
}
|
||||
|
||||
public int getHeadRowNumber() {
|
||||
return headRowNumber;
|
||||
}
|
||||
|
||||
public void setHeadRowNumber(int headRowNumber) {
|
||||
this.headRowNumber = headRowNumber;
|
||||
}
|
||||
|
||||
public Map<Integer, Head> getHeadMap() {
|
||||
return headMap;
|
||||
}
|
||||
|
||||
public void setHeadMap(Map<Integer, Head> headMap) {
|
||||
this.headMap = headMap;
|
||||
}
|
||||
|
||||
public Map<Integer, ExcelContentProperty> getContentPropertyMap() {
|
||||
return contentPropertyMap;
|
||||
}
|
||||
|
||||
public void setContentPropertyMap(Map<Integer, ExcelContentProperty> contentPropertyMap) {
|
||||
this.contentPropertyMap = contentPropertyMap;
|
||||
}
|
||||
|
||||
public Map<String, ExcelContentProperty> getFieldNameContentPropertyMap() {
|
||||
return fieldNameContentPropertyMap;
|
||||
}
|
||||
|
||||
public void setFieldNameContentPropertyMap(Map<String, ExcelContentProperty> fieldNameContentPropertyMap) {
|
||||
this.fieldNameContentPropertyMap = fieldNameContentPropertyMap;
|
||||
}
|
||||
|
||||
public Map<String, Field> getIgnoreMap() {
|
||||
return ignoreMap;
|
||||
}
|
||||
|
||||
public void setIgnoreMap(Map<String, Field> ignoreMap) {
|
||||
this.ignoreMap = ignoreMap;
|
||||
}
|
||||
}
|
||||
|
@ -15,14 +15,14 @@ import com.alibaba.excel.read.metadata.ReadWorkbook;
|
||||
import com.alibaba.excel.read.metadata.property.ExcelReadHeadProperty;
|
||||
import com.alibaba.excel.util.ListUtils;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* Read Holder
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public abstract class AbstractReadHolder extends AbstractHolder implements ReadHolder {
|
||||
/**
|
||||
* Count the number of added heads when read sheet.
|
||||
@ -112,29 +112,6 @@ public abstract class AbstractReadHolder extends AbstractHolder implements ReadH
|
||||
}
|
||||
}
|
||||
|
||||
public List<ReadListener> getReadListenerList() {
|
||||
return readListenerList;
|
||||
}
|
||||
|
||||
public void setReadListenerList(List<ReadListener> readListenerList) {
|
||||
this.readListenerList = readListenerList;
|
||||
}
|
||||
|
||||
public ExcelReadHeadProperty getExcelReadHeadProperty() {
|
||||
return excelReadHeadProperty;
|
||||
}
|
||||
|
||||
public void setExcelReadHeadProperty(ExcelReadHeadProperty excelReadHeadProperty) {
|
||||
this.excelReadHeadProperty = excelReadHeadProperty;
|
||||
}
|
||||
|
||||
public Integer getHeadRowNumber() {
|
||||
return headRowNumber;
|
||||
}
|
||||
|
||||
public void setHeadRowNumber(Integer headRowNumber) {
|
||||
this.headRowNumber = headRowNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReadListener> readListenerList() {
|
||||
|
@ -179,9 +179,9 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
|
||||
}
|
||||
WriteWorkbookHolder writeWorkbookHolder = writeContext.writeWorkbookHolder();
|
||||
boolean needIgnore =
|
||||
!CollectionUtils.isEmpty(writeWorkbookHolder.getExcludeColumnFiledNames()) || !CollectionUtils
|
||||
!CollectionUtils.isEmpty(writeWorkbookHolder.getExcludeColumnFieldNames()) || !CollectionUtils
|
||||
.isEmpty(writeWorkbookHolder.getExcludeColumnIndexes()) || !CollectionUtils
|
||||
.isEmpty(writeWorkbookHolder.getIncludeColumnFiledNames()) || !CollectionUtils
|
||||
.isEmpty(writeWorkbookHolder.getIncludeColumnFieldNames()) || !CollectionUtils
|
||||
.isEmpty(writeWorkbookHolder.getIncludeColumnIndexes());
|
||||
ClassUtils.declaredFields(clazz, sortedAllFiledMap,
|
||||
writeWorkbookHolder.getWriteWorkbook().getConvertAllFiled(), needIgnore, writeWorkbookHolder);
|
||||
|
@ -9,6 +9,8 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.poi.ss.usermodel.FillPatternType;
|
||||
import org.apache.poi.ss.usermodel.IndexedColors;
|
||||
@ -50,6 +52,8 @@ import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy;
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public abstract class AbstractWriteHolder extends AbstractHolder implements WriteHolder {
|
||||
/**
|
||||
* Need Head
|
||||
|
@ -8,7 +8,9 @@ import com.alibaba.excel.enums.WriteLastRowTypeEnum;
|
||||
import com.alibaba.excel.util.StringUtils;
|
||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
@ -20,8 +22,8 @@ import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class WriteSheetHolder extends AbstractWriteHolder {
|
||||
/**
|
||||
* current param
|
||||
|
@ -20,6 +20,7 @@ import com.alibaba.excel.util.MapUtils;
|
||||
import com.alibaba.excel.util.StringUtils;
|
||||
import com.alibaba.excel.write.metadata.WriteWorkbook;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
@ -33,8 +34,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Data
|
||||
public class WriteWorkbookHolder extends AbstractWriteHolder {
|
||||
/***
|
||||
* Current poi Workbook.This is only for writing, and there may be no data in version 07 when template data needs to
|
||||
|
@ -1,5 +1,10 @@
|
||||
package com.alibaba.excel.write.metadata.style;
|
||||
|
||||
import com.alibaba.excel.metadata.property.FontProperty;
|
||||
import com.alibaba.excel.metadata.property.StyleProperty;
|
||||
import com.alibaba.excel.util.StringUtils;
|
||||
|
||||
import lombok.Data;
|
||||
import org.apache.poi.ss.usermodel.BorderStyle;
|
||||
import org.apache.poi.ss.usermodel.BuiltinFormats;
|
||||
import org.apache.poi.ss.usermodel.FillPatternType;
|
||||
@ -8,15 +13,12 @@ import org.apache.poi.ss.usermodel.IgnoredErrorType;
|
||||
import org.apache.poi.ss.usermodel.IndexedColors;
|
||||
import org.apache.poi.ss.usermodel.VerticalAlignment;
|
||||
|
||||
import com.alibaba.excel.metadata.property.FontProperty;
|
||||
import com.alibaba.excel.metadata.property.StyleProperty;
|
||||
import com.alibaba.excel.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Cell style when writing
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public class WriteCellStyle {
|
||||
/**
|
||||
* Set the data format (must be a valid format). Built in formats are defined at {@link BuiltinFormats}.
|
||||
@ -213,180 +215,4 @@ public class WriteCellStyle {
|
||||
|
||||
return writeCellStyle;
|
||||
}
|
||||
|
||||
public Short getDataFormat() {
|
||||
return dataFormat;
|
||||
}
|
||||
|
||||
public void setDataFormat(Short dataFormat) {
|
||||
this.dataFormat = dataFormat;
|
||||
}
|
||||
|
||||
public WriteFont getWriteFont() {
|
||||
return writeFont;
|
||||
}
|
||||
|
||||
public void setWriteFont(WriteFont writeFont) {
|
||||
this.writeFont = writeFont;
|
||||
}
|
||||
|
||||
public Boolean getHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public void setHidden(Boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
}
|
||||
|
||||
public Boolean getLocked() {
|
||||
return locked;
|
||||
}
|
||||
|
||||
public void setLocked(Boolean locked) {
|
||||
this.locked = locked;
|
||||
}
|
||||
|
||||
public Boolean getQuotePrefix() {
|
||||
return quotePrefix;
|
||||
}
|
||||
|
||||
public void setQuotePrefix(Boolean quotePrefix) {
|
||||
this.quotePrefix = quotePrefix;
|
||||
}
|
||||
|
||||
public HorizontalAlignment getHorizontalAlignment() {
|
||||
return horizontalAlignment;
|
||||
}
|
||||
|
||||
public void setHorizontalAlignment(HorizontalAlignment horizontalAlignment) {
|
||||
this.horizontalAlignment = horizontalAlignment;
|
||||
}
|
||||
|
||||
public Boolean getWrapped() {
|
||||
return wrapped;
|
||||
}
|
||||
|
||||
public void setWrapped(Boolean wrapped) {
|
||||
this.wrapped = wrapped;
|
||||
}
|
||||
|
||||
public VerticalAlignment getVerticalAlignment() {
|
||||
return verticalAlignment;
|
||||
}
|
||||
|
||||
public void setVerticalAlignment(VerticalAlignment verticalAlignment) {
|
||||
this.verticalAlignment = verticalAlignment;
|
||||
}
|
||||
|
||||
public Short getRotation() {
|
||||
return rotation;
|
||||
}
|
||||
|
||||
public void setRotation(Short rotation) {
|
||||
this.rotation = rotation;
|
||||
}
|
||||
|
||||
public Short getIndent() {
|
||||
return indent;
|
||||
}
|
||||
|
||||
public void setIndent(Short indent) {
|
||||
this.indent = indent;
|
||||
}
|
||||
|
||||
public BorderStyle getBorderLeft() {
|
||||
return borderLeft;
|
||||
}
|
||||
|
||||
public void setBorderLeft(BorderStyle borderLeft) {
|
||||
this.borderLeft = borderLeft;
|
||||
}
|
||||
|
||||
public BorderStyle getBorderRight() {
|
||||
return borderRight;
|
||||
}
|
||||
|
||||
public void setBorderRight(BorderStyle borderRight) {
|
||||
this.borderRight = borderRight;
|
||||
}
|
||||
|
||||
public BorderStyle getBorderTop() {
|
||||
return borderTop;
|
||||
}
|
||||
|
||||
public void setBorderTop(BorderStyle borderTop) {
|
||||
this.borderTop = borderTop;
|
||||
}
|
||||
|
||||
public BorderStyle getBorderBottom() {
|
||||
return borderBottom;
|
||||
}
|
||||
|
||||
public void setBorderBottom(BorderStyle borderBottom) {
|
||||
this.borderBottom = borderBottom;
|
||||
}
|
||||
|
||||
public Short getLeftBorderColor() {
|
||||
return leftBorderColor;
|
||||
}
|
||||
|
||||
public void setLeftBorderColor(Short leftBorderColor) {
|
||||
this.leftBorderColor = leftBorderColor;
|
||||
}
|
||||
|
||||
public Short getRightBorderColor() {
|
||||
return rightBorderColor;
|
||||
}
|
||||
|
||||
public void setRightBorderColor(Short rightBorderColor) {
|
||||
this.rightBorderColor = rightBorderColor;
|
||||
}
|
||||
|
||||
public Short getTopBorderColor() {
|
||||
return topBorderColor;
|
||||
}
|
||||
|
||||
public void setTopBorderColor(Short topBorderColor) {
|
||||
this.topBorderColor = topBorderColor;
|
||||
}
|
||||
|
||||
public Short getBottomBorderColor() {
|
||||
return bottomBorderColor;
|
||||
}
|
||||
|
||||
public void setBottomBorderColor(Short bottomBorderColor) {
|
||||
this.bottomBorderColor = bottomBorderColor;
|
||||
}
|
||||
|
||||
public FillPatternType getFillPatternType() {
|
||||
return fillPatternType;
|
||||
}
|
||||
|
||||
public void setFillPatternType(FillPatternType fillPatternType) {
|
||||
this.fillPatternType = fillPatternType;
|
||||
}
|
||||
|
||||
public Short getFillBackgroundColor() {
|
||||
return fillBackgroundColor;
|
||||
}
|
||||
|
||||
public void setFillBackgroundColor(Short fillBackgroundColor) {
|
||||
this.fillBackgroundColor = fillBackgroundColor;
|
||||
}
|
||||
|
||||
public Short getFillForegroundColor() {
|
||||
return fillForegroundColor;
|
||||
}
|
||||
|
||||
public void setFillForegroundColor(Short fillForegroundColor) {
|
||||
this.fillForegroundColor = fillForegroundColor;
|
||||
}
|
||||
|
||||
public Boolean getShrinkToFit() {
|
||||
return shrinkToFit;
|
||||
}
|
||||
|
||||
public void setShrinkToFit(Boolean shrinkToFit) {
|
||||
this.shrinkToFit = shrinkToFit;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.alibaba.excel.write.metadata.style;
|
||||
|
||||
import lombok.Data;
|
||||
import org.apache.poi.common.usermodel.fonts.FontCharset;
|
||||
import org.apache.poi.hssf.usermodel.HSSFPalette;
|
||||
import org.apache.poi.ss.usermodel.Font;
|
||||
@ -10,6 +11,7 @@ import org.apache.poi.ss.usermodel.IndexedColors;
|
||||
*
|
||||
* @author jipengfei
|
||||
*/
|
||||
@Data
|
||||
public class WriteFont {
|
||||
/**
|
||||
* The name for the font (i.e. Arial)
|
||||
@ -68,76 +70,4 @@ public class WriteFont {
|
||||
* Bold
|
||||
*/
|
||||
private Boolean bold;
|
||||
|
||||
public String getFontName() {
|
||||
return fontName;
|
||||
}
|
||||
|
||||
public void setFontName(String fontName) {
|
||||
this.fontName = fontName;
|
||||
}
|
||||
|
||||
public Short getFontHeightInPoints() {
|
||||
return fontHeightInPoints;
|
||||
}
|
||||
|
||||
public void setFontHeightInPoints(Short fontHeightInPoints) {
|
||||
this.fontHeightInPoints = fontHeightInPoints;
|
||||
}
|
||||
|
||||
public Boolean getItalic() {
|
||||
return italic;
|
||||
}
|
||||
|
||||
public void setItalic(Boolean italic) {
|
||||
this.italic = italic;
|
||||
}
|
||||
|
||||
public Boolean getStrikeout() {
|
||||
return strikeout;
|
||||
}
|
||||
|
||||
public void setStrikeout(Boolean strikeout) {
|
||||
this.strikeout = strikeout;
|
||||
}
|
||||
|
||||
public Short getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public void setColor(Short color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public Short getTypeOffset() {
|
||||
return typeOffset;
|
||||
}
|
||||
|
||||
public void setTypeOffset(Short typeOffset) {
|
||||
this.typeOffset = typeOffset;
|
||||
}
|
||||
|
||||
public Byte getUnderline() {
|
||||
return underline;
|
||||
}
|
||||
|
||||
public void setUnderline(Byte underline) {
|
||||
this.underline = underline;
|
||||
}
|
||||
|
||||
public Integer getCharset() {
|
||||
return charset;
|
||||
}
|
||||
|
||||
public void setCharset(Integer charset) {
|
||||
this.charset = charset;
|
||||
}
|
||||
|
||||
public Boolean getBold() {
|
||||
return bold;
|
||||
}
|
||||
|
||||
public void setBold(Boolean bold) {
|
||||
this.bold = bold;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user