forked from fanruan/easyexcel
Jiaju Zhuang
4 years ago
committed by
GitHub
16 changed files with 405 additions and 57 deletions
@ -0,0 +1,61 @@ |
|||||||
|
package com.alibaba.excel.annotation.write.style; |
||||||
|
|
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.ClientAnchor; |
||||||
|
|
||||||
|
import java.lang.annotation.ElementType; |
||||||
|
import java.lang.annotation.Inherited; |
||||||
|
import java.lang.annotation.RetentionPolicy; |
||||||
|
import java.lang.annotation.Target; |
||||||
|
import java.lang.annotation.Retention; |
||||||
|
|
||||||
|
/** |
||||||
|
* This annotation is used to set the position of a picture. |
||||||
|
* See {@link ClientAnchor} |
||||||
|
*/ |
||||||
|
|
||||||
|
@Target(ElementType.FIELD) |
||||||
|
@Retention(RetentionPolicy.RUNTIME) |
||||||
|
@Inherited |
||||||
|
public @interface ImagePosition { |
||||||
|
|
||||||
|
/** |
||||||
|
* The x coordinate within the first cell. |
||||||
|
*/ |
||||||
|
int dx1(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The y coordinate within the first cell. |
||||||
|
*/ |
||||||
|
int dy1(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The x coordinate within the second cell. |
||||||
|
*/ |
||||||
|
int dx2(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The y coordinate within the second cell |
||||||
|
*/ |
||||||
|
int dy2(); |
||||||
|
|
||||||
|
/** |
||||||
|
* 0-based column of the first cell. |
||||||
|
*/ |
||||||
|
short col1(); |
||||||
|
|
||||||
|
/** |
||||||
|
* 0-based row of the first cell. |
||||||
|
*/ |
||||||
|
int row1(); |
||||||
|
|
||||||
|
/** |
||||||
|
* 0-based column of the second cell. |
||||||
|
*/ |
||||||
|
short col2(); |
||||||
|
|
||||||
|
/** |
||||||
|
* 0-based row of the second cell. |
||||||
|
*/ |
||||||
|
int row2(); |
||||||
|
} |
@ -0,0 +1,135 @@ |
|||||||
|
package com.alibaba.excel.metadata.property; |
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.write.style.ImagePosition; |
||||||
|
|
||||||
|
/** |
||||||
|
* Keep the image position information from an annotation. |
||||||
|
* |
||||||
|
* @author Pengliang Zhao |
||||||
|
*/ |
||||||
|
public class ImagePositionProperty { |
||||||
|
|
||||||
|
/** |
||||||
|
* 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; |
||||||
|
|
||||||
|
public static ImagePositionProperty build(ImagePosition imagePosition) { |
||||||
|
if (imagePosition == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
return new ImagePositionProperty(imagePosition.dx1(), imagePosition.dy1(), imagePosition.dx2(), |
||||||
|
imagePosition.dy2(), imagePosition.col1(), imagePosition.row1(), imagePosition.col2(), |
||||||
|
imagePosition.row2()); |
||||||
|
} |
||||||
|
|
||||||
|
public ImagePositionProperty(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2) { |
||||||
|
this.dx1 = dx1; |
||||||
|
this.dy1 = dy1; |
||||||
|
this.dx2 = dx2; |
||||||
|
this.dy2 = dy2; |
||||||
|
this.col1 = col1; |
||||||
|
this.row1 = row1; |
||||||
|
this.col2 = col2; |
||||||
|
this.row2 = row2; |
||||||
|
} |
||||||
|
|
||||||
|
public int getDx1() { |
||||||
|
return dx1; |
||||||
|
} |
||||||
|
|
||||||
|
public void setDx1(int dx1) { |
||||||
|
this.dx1 = dx1; |
||||||
|
} |
||||||
|
|
||||||
|
public int getDy1() { |
||||||
|
return dy1; |
||||||
|
} |
||||||
|
|
||||||
|
public void setDy1(int dy1) { |
||||||
|
this.dy1 = dy1; |
||||||
|
} |
||||||
|
|
||||||
|
public int getDx2() { |
||||||
|
return dx2; |
||||||
|
} |
||||||
|
|
||||||
|
public void setDx2(int dx2) { |
||||||
|
this.dx2 = dx2; |
||||||
|
} |
||||||
|
|
||||||
|
public int getDy2() { |
||||||
|
return dy2; |
||||||
|
} |
||||||
|
|
||||||
|
public void setDy2(int dy2) { |
||||||
|
this.dy2 = dy2; |
||||||
|
} |
||||||
|
|
||||||
|
public short getCol1() { |
||||||
|
return col1; |
||||||
|
} |
||||||
|
|
||||||
|
public void setCol1(short col1) { |
||||||
|
this.col1 = col1; |
||||||
|
} |
||||||
|
|
||||||
|
public int getRow1() { |
||||||
|
return row1; |
||||||
|
} |
||||||
|
|
||||||
|
public void setRow1(int row1) { |
||||||
|
this.row1 = row1; |
||||||
|
} |
||||||
|
|
||||||
|
public short getCol2() { |
||||||
|
return col2; |
||||||
|
} |
||||||
|
|
||||||
|
public void setCol2(short col2) { |
||||||
|
this.col2 = col2; |
||||||
|
} |
||||||
|
|
||||||
|
public int getRow2() { |
||||||
|
return row2; |
||||||
|
} |
||||||
|
|
||||||
|
public void setRow2(int row2) { |
||||||
|
this.row2 = row2; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
package com.alibaba.easyexcel.test.demo.write; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.InputStream; |
||||||
|
import java.net.URL; |
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||||
|
import com.alibaba.excel.annotation.write.style.ColumnWidth; |
||||||
|
import com.alibaba.excel.annotation.write.style.ContentRowHeight; |
||||||
|
import com.alibaba.excel.annotation.write.style.ImagePosition; |
||||||
|
import com.alibaba.excel.converters.string.StringImageConverter; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
/** |
||||||
|
* 图片导出类 |
||||||
|
* |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@ContentRowHeight(100) |
||||||
|
@ColumnWidth(100 / 8) |
||||||
|
public class ImageDataWithAnnotation { |
||||||
|
@ImagePosition(dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0, col1 = 0, row1 = 3, col2 = 1, row2 = 4) |
||||||
|
private File file; |
||||||
|
@ImagePosition(dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0, col1 = 0, row1 = 1, col2 = 2, row2 = 2) |
||||||
|
private InputStream inputStream; |
||||||
|
/** |
||||||
|
* 如果string类型 必须指定转换器,string默认转换成string |
||||||
|
*/ |
||||||
|
@ExcelProperty(converter = StringImageConverter.class) |
||||||
|
@ImagePosition(dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0, col1 = 2, row1 = 1, col2 = 3, row2 = 3) |
||||||
|
private String string; |
||||||
|
@ImagePosition(dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0, col1 = 3, row1 = 1, col2 = 4, row2 = 5) |
||||||
|
private byte[] byteArray; |
||||||
|
/** |
||||||
|
* 根据url导出 |
||||||
|
* |
||||||
|
* @since 2.1.1 |
||||||
|
*/ |
||||||
|
@ImagePosition(dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0, col1 = 4, row1 = 1, col2 = 5, row2 = 2) |
||||||
|
private URL url; |
||||||
|
} |
Loading…
Reference in new issue