forked from fanruan/easyexcel
Jiaju Zhuang
4 years ago
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