forked from fanruan/easyexcel
Jiaju Zhuang
4 years ago
23 changed files with 450 additions and 497 deletions
@ -0,0 +1,2 @@ |
|||||||
|
lombok.toString.callSuper = CALL |
||||||
|
lombok.equalsAndHashCode.callSuper= CALL |
@ -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]; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
@ -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; |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.alibaba.excel.metadata; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* formula |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
public class FormulaData { |
||||||
|
/** |
||||||
|
* formula |
||||||
|
*/ |
||||||
|
private String formulaValue; |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package com.alibaba.excel.metadata; |
||||||
|
|
||||||
|
/** |
||||||
|
* TODO |
||||||
|
* |
||||||
|
* @author Jiaju Zhuang |
||||||
|
*/ |
||||||
|
public class HyperlinkData { |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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; |
||||||
|
} |
Loading…
Reference in new issue