Former-commit-id: 41a392eba01c8e3570762fa10aeec410399d2797
master
王兵 4 years ago
parent f3e38ff394
commit b5b8df9b8d

@ -524,7 +524,8 @@ public class SpringBootCallable implements Callable {
File excelannotation = Tool.createPath(excel.getAbsolutePath(), "annotation");
File excelconverter = Tool.createPath(excel.getAbsolutePath(), "converter");
File exception = Tool.createPath(excel.getAbsolutePath(), "exception");
File excelstyle = Tool.createPath(excel.getAbsolutePath(), "style");
File excelhandler = Tool.createPath(excel.getAbsolutePath(), "handler");
File excellistener = Tool.createPath(excel.getAbsolutePath(), "listener");
File schedule = Tool.createPath(root.getAbsolutePath(), "schedule");
File utils = Tool.createPath(root.getAbsolutePath(), "utils");
File validation = Tool.createPath(root.getAbsolutePath(), "validation");
@ -552,8 +553,11 @@ public class SpringBootCallable implements Callable {
for (String name : ResourceUtil.getResourceFiles("/modules/SpringBoot/java/frame/excel/exception/")) {
freeMarkerManager.outputTemp(Tool.createFile(exception.getAbsolutePath(), name), "SpringBoot/java/frame/excel/exception/" + name, ctx);
}
for (String name : ResourceUtil.getResourceFiles("/modules/SpringBoot/java/frame/excel/style/")) {
freeMarkerManager.outputTemp(Tool.createFile(excelstyle.getAbsolutePath(), name), "SpringBoot/java/frame/excel/style/" + name, ctx);
for (String name : ResourceUtil.getResourceFiles("/modules/SpringBoot/java/frame/excel/handler/")) {
freeMarkerManager.outputTemp(Tool.createFile(excelhandler.getAbsolutePath(), name), "SpringBoot/java/frame/excel/handler/" + name, ctx);
}
for (String name : ResourceUtil.getResourceFiles("/modules/SpringBoot/java/frame/excel/listener/")) {
freeMarkerManager.outputTemp(Tool.createFile(excellistener.getAbsolutePath(), name), "SpringBoot/java/frame/excel/listener/" + name, ctx);
}
//schedule

@ -1,6 +1,8 @@
package ${basePackage}.frame.base;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.io.Serializable;
import java.util.Date;
@ -16,40 +18,47 @@ public class BaseEntity implements Serializable {
/**
*
*/
@ExcelIgnore
private long id;
/**
*
*/
@ExcelIgnore
private long rowVersion;
/**
*
*/
@JsonIgnore
@ExcelIgnore
private long createBy;
/**
*
*/
@ExcelIgnore
private Date createTime;
/**
*
*/
@JsonIgnore
@ExcelIgnore
private long lastUpdateBy;
/**
*
*/
@JsonIgnore
@ExcelIgnore
private Date lastUpdateTime;
/**
*
*/
*
*/
@JsonIgnore
@ExcelIgnore
private boolean isDeleted;
public long getRowVersion() {

@ -0,0 +1,140 @@
package ${basePackage}.frame.excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import ${basePackage}.frame.base.BaseEntity;
import ${basePackage}.frame.excel.annotation.ExcelNote;
import ${basePackage}.frame.excel.annotation.ExcelSelect;
import ${basePackage}.frame.excel.annotation.ExcelSheet;
import java.util.Date;
@ExcelSheet("应用接入")
public class DemoData extends BaseEntity {
@ExcelProperty({"字符列", "普通字符列"})
@ExcelNote("字符列描述")
private String str1;
@ExcelProperty({"字符列", "可选字符列"})
@ExcelSelect({"选项一", "选项二"})
private String str2;
private String str3;//无ExcelProperty默认为字段名称
@ExcelIgnore
private String str4;//忽略的字段
@ExcelProperty("短整数列")
private short sint;
@ExcelProperty("整数列")
private int mint;
@ExcelProperty("长整数列")
private long lint;
@ExcelProperty("双精度列")
@NumberFormat("#.##")
private double dbn;
@ExcelProperty("单精度列")
@NumberFormat("#.##")
private float fln;
@ExcelProperty("时间列")
private Date date;
@ExcelProperty("是否有效")
@ExcelSelect({"是", "否"})
private boolean valid;
public String getStr1() {
return str1;
}
public void setStr1(String str1) {
this.str1 = str1;
}
public String getStr2() {
return str2;
}
public void setStr2(String str2) {
this.str2 = str2;
}
public String getStr3() {
return str3;
}
public void setStr3(String str3) {
this.str3 = str3;
}
public String getStr4() {
return str4;
}
public void setStr4(String str4) {
this.str4 = str4;
}
public short getSint() {
return sint;
}
public void setSint(short sint) {
this.sint = sint;
}
public int getMint() {
return mint;
}
public void setMint(int mint) {
this.mint = mint;
}
public long getLint() {
return lint;
}
public void setLint(long lint) {
this.lint = lint;
}
public double getDbn() {
return dbn;
}
public void setDbn(double dbn) {
this.dbn = dbn;
}
public float getFln() {
return fln;
}
public void setFln(float fln) {
this.fln = fln;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public boolean isValid() {
return valid;
}
public void setValid(boolean valid) {
this.valid = valid;
}
}

@ -1,47 +0,0 @@
package ${basePackage}.frame.excel;
import java.io.Serializable;
/**
* WCell - Excel
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class WCell implements Serializable {
/**
*
*/
private String value;
/**
* excel
*/
private String error;
public WCell() {
this.value = "";
}
public WCell(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}

@ -1,146 +0,0 @@
package ${basePackage}.frame.excel;
import ${basePackage}.frame.excel.converter.Converter;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* WColumn - Excel()
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class WColumn implements Serializable {
/**
*
*/
private String name = "";
/**
*
*/
private int cellWidth = 8;
/**
*
*/
private boolean isRequired = false;
/**
*
*/
private String description = "";
/**
*
*/
private Converter converter;
/**
* Field
*/
private Field field;
/**
* set
*/
private Method setMethod;
/**
* get
*/
private Method getMethod;
/**
* ExcelType
*/
private int cellType = 1;
/**
*
*/
private String[] cellList;
public WColumn() {
this.name = "";
}
public WColumn(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Field getField() {
return field;
}
public void setField(Field field) {
this.field = field;
}
public int getCellWidth() {
return cellWidth;
}
public void setCellWidth(int cellWidth) {
this.cellWidth = cellWidth;
}
public boolean isRequired() {
return isRequired;
}
public void setRequired(boolean isRequired) {
this.isRequired = isRequired;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Converter getConverter() {
return converter;
}
public void setConverter(Converter converter) {
this.converter = converter;
}
public int getCellType() {
return cellType;
}
public void setCellType(int cellType) {
this.cellType = cellType;
}
public Method getSetMethod() {
return setMethod;
}
public void setSetMethod(Method setMethod) {
this.setMethod = setMethod;
}
public Method getGetMethod() {
return getMethod;
}
public void setGetMethod(Method getMethod) {
this.getMethod = getMethod;
}
public String[] getCellList() {
return cellList;
}
public void setCellList(String[] cellList) {
this.cellList = cellList;
}
}

@ -0,0 +1,65 @@
package ${basePackage}.frame.excel;
import com.alibaba.excel.metadata.Head;
/**
* WHead - Excel()
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class WHead {
public WHead(Head head) {
this.head = head;
}
/**
*
*/
private Head head;
/**
*
*/
private String name = "";
/**
*
*/
private String note = "";
/**
*
*/
private String[] selectList;
public Head getHead() {
return head;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public String[] getSelectList() {
return selectList;
}
public void setSelectList(String[] selectList) {
this.selectList = selectList;
}
}

@ -1,34 +0,0 @@
package ${basePackage}.frame.excel;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* WRow - ExcelWCell<br>HashMap<String, WCell>,keyvalue
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class WRow extends HashMap<String, WCell> implements Serializable {
private List<String> errorList = new ArrayList<>();
public final boolean hasError() {
return errorList.size() > 0;
}
public final void addError(String errorMsg) {
errorList.add(errorMsg);
}
public final void addErrors(List<String> errorMsgs) {
errorList.addAll(errorMsgs);
}
public List<String> getErrorList() {
return errorList;
}
}

@ -1,40 +0,0 @@
package ${basePackage}.frame.excel.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* ColumnName - ExcelExcel使
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ColumnName {
/**
*
*/
String value();
/**
*
*/
int width() default 8;
/**
* *
*/
boolean required() default false;
/**
*
*/
String dateFormat() default "yyyy-MM-dd";
}

@ -7,7 +7,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* ColumnDescription - Excel
* ExcelNote - Excel
*
* @author wangbing
* @version 0.0.1
@ -16,7 +16,7 @@ import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ColumnDescription {
public @interface ExcelNote {
String value() default "";
}

@ -7,7 +7,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* ColumnList -
* ExcelSelect -
*
* @author wangbing
* @version 0.0.1
@ -16,7 +16,7 @@ import java.lang.annotation.Target;
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ColumnList {
public @interface ExcelSelect {
/**
*

@ -7,15 +7,13 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Converter - Excel
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Target(ElementType.FIELD)
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Convert {
Class target();
public @interface ExcelSheet {
String value();
}

@ -1,21 +0,0 @@
package ${basePackage}.frame.excel.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Ignore - Excel
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Ignore {
boolean value() default true;
}

@ -1,21 +0,0 @@
package ${basePackage}.frame.excel.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* ParentFirst -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ParentFirst {
boolean value() default true;
}

@ -1,23 +0,0 @@
package ${basePackage}.frame.excel.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* SheetName - Excel使Class
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SheetName {
String value();
boolean freezeFirst() default false;
}

@ -1,24 +1,23 @@
package ${basePackage}.frame.excel.converter;
import ${basePackage}.frame.excel.exception.ValueConverterException;
import com.alibaba.excel.converters.Converter;
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;
/**
* BooleanConverter - BooleanStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class BooleanConverter implements Converter<Boolean> {
@Override
public Boolean convert(String var) throws ValueConverterException {
if (null == var || "".equals(var)) {
return false;
}
public Class supportJavaTypeKey() {
return Boolean.class;
}
String lowerCase = var.toLowerCase();
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
public Boolean convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws ValueConverterException {
String lowerCase = cellData.getStringValue().toLowerCase();
if (lowerCase.matches("y|n")) {
return "y".equals(lowerCase);
} else if (lowerCase.matches("yes|no")) {
@ -32,15 +31,14 @@ public class BooleanConverter implements Converter<Boolean> {
} else if (lowerCase.matches("是|不是")) {
return "是".equals(lowerCase);
} else {
throw new ValueConverterException("[" + var + "] can not convert to Boolean");
throw new ValueConverterException("[" + cellData.getStringValue() + "] can not convert to Boolean");
}
}
@Override
public String string(Boolean var) {
if (var == null) {
return "";
public CellData convertToExcelData(Boolean value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
if (value == null) {
return new CellData("");
}
return var ? "是" : "否";
return new CellData(value ? "是" : "否");
}
}
}

@ -1,28 +0,0 @@
package ${basePackage}.frame.excel.converter;
/**
* ByteConverter - ByteStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class ByteConverter implements Converter<Byte> {
@Override
public Byte convert(String var) {
try {
return Byte.parseByte(var);
} catch (Exception e) {
return 0;
}
}
@Override
public String string(Byte var) {
if (var == null) {
return "";
}
return String.valueOf(var);
}
}

@ -1,28 +0,0 @@
package ${basePackage}.frame.excel.converter;
/**
* CharacterConverter - CharacterStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class CharacterConverter implements Converter<Character> {
@Override
public Character convert(String var) {
if (var == null || var.equals("")) {
return '0';
} else {
return var.charAt(0);
}
}
@Override
public String string(Character var) {
if (var == null) {
return "";
}
return String.valueOf(var).trim();
}
}

@ -1,17 +0,0 @@
package ${basePackage}.frame.excel.converter;
import ${basePackage}.frame.excel.exception.ValueConverterException;
/**
* Converter -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public interface Converter<T> {
T convert(String var) throws ValueConverterException;
String string(T var);
}

@ -1,51 +0,0 @@
package ${basePackage}.frame.excel.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* DateConverter - DateStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class DateConverter implements Converter<Date> {
@Override
public Date convert(String var) {
if (var == null) {
return null;
}
Date date = null;
try {
var = var.trim();
if (var.matches("[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(var);
} else if (var.matches("[0-9]{4}/[0-9]{1,2}/[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(var);
} else if (var.matches("[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = sdf.parse(var);
} else if (var.matches("[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日 [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
date = sdf.parse(var);
}
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
@Override
public String string(Date var) {
if (var == null) {
return "";
}
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(var);
}
}

@ -1,28 +0,0 @@
package ${basePackage}.frame.excel.converter;
/**
* DoubleConverter - DoubleStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class DoubleConverter implements Converter<Double> {
@Override
public Double convert(String var) {
try {
return Double.parseDouble(var);
} catch (Exception e) {
return 0d;
}
}
@Override
public String string(Double var) {
if (var == null) {
return "";
}
return String.valueOf(var);
}
}

@ -1,33 +0,0 @@
package ${basePackage}.frame.excel.converter;
/**
* FloatConverter - FloatStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FloatConverter implements Converter<Float> {
@Override
public Float convert(String var) {
try {
//增加对1.0一类的的优化显示
if (var.matches("(\\d+)\\.0")) {
var = var.replaceAll("\\.0$", "");
}
return Float.parseFloat(var);
} catch (Exception e) {
return 0f;
}
}
@Override
public String string(Float var) {
if (var == null) {
return "";
}
return String.valueOf(var);
}
}

@ -1,28 +0,0 @@
package ${basePackage}.frame.excel.converter;
/**
* IntegerConverter - IntegerStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class IntegerConverter implements Converter<Integer> {
@Override
public Integer convert(String var) {
try {
return Integer.parseInt(var);
} catch (Exception e) {
return 0;
}
}
@Override
public String string(Integer var) {
if (var == null) {
return "";
}
return String.valueOf(var);
}
}

@ -1,40 +0,0 @@
package ${basePackage}.frame.excel.converter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* LongConverter - LongStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class LongConverter implements Converter<Long> {
@Override
public Long convert(String var) {
try {
//增加对1.0一类的的兼容性
if (var.matches("(\\d+)\\.(\\d*)")) {
Pattern compile = Pattern.compile("(\\d+)\\.(\\d*)");
Matcher matcher = compile.matcher(var);
if (matcher.find()) {
var = matcher.group(1);
}
}
return Long.parseLong(var);
} catch (Exception e) {
return 0L;
}
}
@Override
public String string(Long var) {
if (var == null) {
return "";
}
return String.valueOf(var);
}
}

@ -1,28 +0,0 @@
package ${basePackage}.frame.excel.converter;
/**
* ShortConverter - ShortStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class ShortConverter implements Converter<Short> {
@Override
public Short convert(String var) {
try {
return Short.parseShort(var);
} catch (Exception e) {
return 0;
}
}
@Override
public String string(Short var) {
if (var == null) {
return "";
}
return String.valueOf(var);
}
}

@ -1,24 +0,0 @@
package ${basePackage}.frame.excel.converter;
/**
* StringConverter - StringStringString
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class StringConverter implements Converter<String> {
@Override
public String convert(String var) {
return var != null ? var.trim() : null;
}
@Override
public String string(String var) {
if (var == null) {
return "";
}
return String.valueOf(var);
}
}

@ -1,17 +0,0 @@
package ${basePackage}.frame.excel.exception;
/**
* Excel
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class ReadErrorException extends Exception {
public ReadErrorException() {
}
public ReadErrorException(String s) {
super(s);
}
}

@ -1,15 +0,0 @@
package ${basePackage}.frame.excel.exception;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class ValueConverterException extends Exception {
public ValueConverterException(String s) {
super(s);
}
}

@ -0,0 +1,24 @@
package ${basePackage}.frame.excel.handler;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.AbstractCellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.Cell;
import java.util.List;
public abstract class HeadWriteHandler extends AbstractCellWriteHandler {
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
super.afterCellDispose(writeSheetHolder, writeTableHolder, cellDataList, cell, head, relativeRowIndex, isHead);
if (isHead) {
handlerHead(head);
}
}
protected abstract void handlerHead(Head head);
}

@ -0,0 +1,65 @@
package ${basePackage}.frame.excel.handler;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Row;
import java.util.List;
import java.util.Map;
public class WCellWriteHandler implements CellWriteHandler {
private CellStyle[] styles;
private Map<Integer, String> errMap;
public WCellWriteHandler(CellStyle[] styles, Map<Integer, String> errMap) {
this.styles = styles;
this.errMap = errMap;
}
@Override
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean isHead) {
}
@Override
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean isHead) {
}
@Override
public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean isHead) {
}
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer rowIndex, Boolean isHead) {
if (isHead) {
// 创建批注
Drawing<?> drawingPatriarch = writeSheetHolder.getSheet().createDrawingPatriarch();
// for (int i = 0; i < wHeads.size(); i++) {
// WHead wHead = wHeads.get(i);
// if (wHead.getNote() != null && !"".equals(wHead.getNote())) {
// // 创建一个批注
// Comment comment = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, (short) i, 0, (short) i + 1, 2));
// // 输入批注信息
// comment.setString(new XSSFRichTextString(wHead.getNote()));
// // 将批注添加到标题对象中
// writeSheetHolder.getSheet().getRow(0).getCell(i).setCellComment(comment);
// }
// }
cell.setCellStyle(styles[0]);
} else if (!"".equals(errMap.getOrDefault(rowIndex, ""))) {
// cell.getCellStyle().setFillForegroundColor(IndexedColors.RED.getIndex());
// cell.getCellStyle().setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(styles[1]);
}
}
}

@ -0,0 +1,39 @@
package ${basePackage}.frame.excel.handler;
import com.alibaba.excel.write.handler.RowWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import java.util.Map;
public class WRowWriteHandler implements RowWriteHandler {
private int errColIndex;
private Map<Integer, String> errMap;
public WRowWriteHandler(int errColIndex, Map<Integer, String> errMap) {
this.errColIndex = errColIndex;
this.errMap = errMap;
}
@Override
public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Integer integer, Integer integer1, Boolean isHead) {
}
@Override
public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer integer, Boolean isHead) {
}
@Override
public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer rowIndex, Boolean isHead) {
if (!isHead && !"".equals(errMap.getOrDefault(rowIndex, ""))) {
Cell cell = row.createCell(errColIndex);
cell.getCellStyle().setWrapText(true);
cell.setCellValue(errMap.get(rowIndex));
}
}
}

@ -0,0 +1,68 @@
package ${basePackage}.frame.excel.handler;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddressList;
import ${basePackage}.frame.excel.WHead;
import java.util.List;
public class WSheetWriteHandler implements SheetWriteHandler {
private List<WHead> wHeads;
private CellStyle[] styles;
public WSheetWriteHandler(List<WHead> wHeads, CellStyle[] styles) {
this.wHeads = wHeads;
this.styles = styles;
}
@Override
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
{
styles[1] = writeWorkbookHolder.getWorkbook().createCellStyle();
styles[1].setFillForegroundColor(IndexedColors.RED.getIndex());
styles[1].setFillPattern(FillPatternType.SOLID_FOREGROUND);
}
{
styles[0] = writeWorkbookHolder.getWorkbook().createCellStyle();
styles[0].setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
styles[0].setFillPattern(FillPatternType.SOLID_FOREGROUND);
styles[0].setBorderBottom(BorderStyle.THIN);
styles[0].setBorderLeft(BorderStyle.THIN);
styles[0].setBorderRight(BorderStyle.THIN);
styles[0].setBorderTop(BorderStyle.THIN);
styles[0].setAlignment(HorizontalAlignment.CENTER);
Font font = writeWorkbookHolder.getWorkbook().createFont();
font.setColor(IndexedColors.BLACK.getIndex());
font.setFontHeightInPoints((short) 12);
font.setBold(true);
styles[0].setFont(font);
}
}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
for (int i = 0; i < wHeads.size(); i++) {
WHead col = wHeads.get(i);
if (col.getSelectList() != null && col.getSelectList().length > 0) {
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(0, 500, i, i);
DataValidationHelper helper = writeSheetHolder.getSheet().getDataValidationHelper();
DataValidationConstraint constraint = helper.createExplicitListConstraint(col.getSelectList());
DataValidation dataValidation = helper.createValidation(constraint, cellRangeAddressList);
writeSheetHolder.getSheet().addValidationData(dataValidation);
}
}
}
}

@ -0,0 +1,52 @@
package ${basePackage}.frame.excel.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import ${basePackage}.frame.excel.WHead;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import java.util.List;
import java.util.Map;
public class CheckHeadReadListener extends AnalysisEventListener {
private List<WHead> wHeads;
private TemplateNotMatchException[] es;
public CheckHeadReadListener(List<WHead> wHeads, TemplateNotMatchException[] es) {
this.wHeads = wHeads;
this.es = es;
}
@Override
public void invokeHeadMap(Map headMap, AnalysisContext context) {
if (wHeads.size() != headMap.size()) {
es[0] = new TemplateNotMatchException("文件列数量与模板不一致!");
return;
}
es[0] = null;
for (int i = 0; i < wHeads.size(); i++) {
WHead wCol = wHeads.get(i);
String cellValue = headMap.get(i).toString();
if (!wCol.getName().equals(cellValue)) {
es[0] = new TemplateNotMatchException(String.format("第 %d 列应为[ %s ]", i + 1, wCol.getName()));
break;
}
}
}
@Override
public void invoke(Object o, AnalysisContext analysisContext) {
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
@Override
public boolean hasNext(AnalysisContext context) {
return es[0] != null;
}
}

@ -0,0 +1,23 @@
package ${basePackage}.frame.excel.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
public class HeadReadListener extends AnalysisEventListener {
@Override
public void invoke(Object o, AnalysisContext analysisContext) {
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
@Override
public boolean hasNext(AnalysisContext context) {
return false;
}
}

@ -1,58 +0,0 @@
package ${basePackage}.frame.excel.style;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Workbook;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class BaseCellStyle {
/**
*
*/
protected CellStyle style;
public BaseCellStyle(Workbook workbook) {
style = workbook.createCellStyle();
style.setFillPattern(CellStyle.NO_FILL);
//下边框
style.setBorderBottom(CellStyle.SOLID_FOREGROUND);
//下边框颜色
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
//左边框
style.setBorderLeft(CellStyle.SOLID_FOREGROUND);
//左边框颜色
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
//右边框
style.setBorderRight(CellStyle.SOLID_FOREGROUND);
//右边框颜色
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
//上边框
style.setBorderTop(CellStyle.SOLID_FOREGROUND);
//上边框颜色
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //上下居中
style.setBorderBottom(CellStyle.SOLID_FOREGROUND); //下边框
style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); //下边框颜色
style.setBorderLeft(CellStyle.SOLID_FOREGROUND); //左边框
style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); //左边框颜色
style.setBorderRight(CellStyle.SOLID_FOREGROUND); //右边框
style.setRightBorderColor(IndexedColors.BLACK.getIndex()); //右边框颜色
style.setBorderTop(CellStyle.SOLID_FOREGROUND); //上边框
style.setTopBorderColor(IndexedColors.BLACK.getIndex()); //上边框颜色
}
public CellStyle getStyle() {
return style;
}
public void setStyle(CellStyle style) {
this.style = style;
}
}

@ -1,30 +0,0 @@
package ${basePackage}.frame.excel.style;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Workbook;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class BaseFont {
/**
*
*/
protected Font font;
public BaseFont(Workbook workbook) {
font = workbook.createFont();
}
public Font getFont() {
return font;
}
public void setFont(Font font) {
this.font = font;
}
}

@ -1,36 +0,0 @@
package ${basePackage}.frame.excel.style;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class DataCellStyle extends BaseCellStyle {
public DataCellStyle(Workbook workbook, short align, boolean error) {
super(workbook);
style.setAlignment(align);
if (error) {
style.setFillForegroundColor(HSSFColor.RED.index); //背景颜色红色
style.setFillPattern(CellStyle.SOLID_FOREGROUND); //设置单元格填充样式
}
}
public DataCellStyle(Workbook workbook, short align) {
this(workbook, align, false);
}
public DataCellStyle(Workbook workbook, boolean error) {
this(workbook, CellStyle.ALIGN_LEFT, error);
}
public DataCellStyle(Workbook workbook) {
this(workbook, CellStyle.ALIGN_LEFT, false);
}
}

@ -1,29 +0,0 @@
package ${basePackage}.frame.excel.style;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class ErrorCellStyle extends BaseCellStyle {
public ErrorCellStyle(Workbook workbook) {
super(workbook);
style.setFillForegroundColor(HSSFColor.RED.index); //背景颜色红色
style.setFillPattern(CellStyle.SOLID_FOREGROUND); //设置单元格填充样式
}
public CellStyle getStyle() {
return style;
}
public void setStyle(CellStyle style) {
this.style = style;
}
}

@ -1,22 +0,0 @@
package ${basePackage}.frame.excel.style;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class HeadCellStyle extends BaseCellStyle {
public HeadCellStyle(Workbook workbook) {
super(workbook);
style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); //背景颜色-灰色
style.setFillPattern(CellStyle.SOLID_FOREGROUND); // 设置单元格填充样式
style.setAlignment(CellStyle.ALIGN_CENTER); // 居中
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//上下居中
}
}

@ -1,18 +0,0 @@
package ${basePackage}.frame.excel.style;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Workbook;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class NormalFont extends BaseFont {
public NormalFont(Workbook workbook) {
super(workbook);
font.setColor(HSSFColor.BLACK.index); //字体颜色-黑色
}
}

@ -1,18 +0,0 @@
package ${basePackage}.frame.excel.style;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Workbook;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class RedFont extends BaseFont {
public RedFont(Workbook workbook) {
super(workbook);
font.setColor(HSSFColor.RED.index);
}
}

@ -1,29 +0,0 @@
package ${basePackage}.frame.excel.style;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class SuccessCellStyle extends BaseCellStyle {
public SuccessCellStyle(Workbook workbook) {
super(workbook);
style.setFillForegroundColor(HSSFColor.GREEN.index); //背景颜色红色
style.setFillPattern(CellStyle.SOLID_FOREGROUND); //设置单元格填充样式
}
public CellStyle getStyle() {
return style;
}
public void setStyle(CellStyle style) {
this.style = style;
}
}
Loading…
Cancel
Save

Powered by TurnKey Linux.