easyexcel 添加下拉框

x33g5p2x  于2021-12-28 转载在 其他  
字(4.2k)|赞(0)|评价(0)|浏览(602)

easyexcel 添加下拉框

*****************

相关类与接口

Sheet(部分方法)

public interface Sheet extends Iterable<Row> {

    DataValidationHelper getDataValidationHelper();
    void addValidationData(DataValidation var1);
}

DataValidationHelper

public interface DataValidationHelper {

    DataValidationConstraint createCustomConstraint(String var1);
    DataValidationConstraint createFormulaListConstraint(String var1);
    DataValidationConstraint createExplicitListConstraint(String[] var1);

    DataValidationConstraint createDecimalConstraint(int var1, String var2, String var3);
    DataValidationConstraint createIntegerConstraint(int var1, String var2, String var3);
    DataValidationConstraint createNumericConstraint(int var1, int var2, String var3, String var4);
    DataValidationConstraint createTextLengthConstraint(int var1, String var2, String var3);

    DataValidationConstraint createDateConstraint(int var1, String var2, String var3, String var4);
    DataValidationConstraint createTimeConstraint(int var1, String var2, String var3);

    DataValidation createValidation(DataValidationConstraint var1, CellRangeAddressList var2);
}

CellRangeAddressList

public class CellRangeAddressList {
    protected final List<CellRangeAddress> _list;

    public CellRangeAddressList() {
    public CellRangeAddressList(int firstRow, int lastRow, int firstCol, int lastCol) {
    public CellRangeAddressList(RecordInputStream in) {

    public void addCellRangeAddress(int firstRow, int firstCol, int lastRow, int lastCol) {
    public void addCellRangeAddress(CellRangeAddress cra) {

    public CellRangeAddress remove(int rangeIndex) {
    public CellRangeAddress getCellRangeAddress(int index) {
    public CellRangeAddress[] getCellRangeAddresses() {

    public int getSize() {
    public int countRanges() {
    public static int getEncodedSize(int numberOfRanges) {

    public int serialize(int offset, byte[] data) {
    public void serialize(LittleEndianOutput out) {

    public CellRangeAddressList copy() {

CellRangeAddress

public class CellRangeAddress extends CellRangeAddressBase {
    public static final int ENCODED_SIZE = 8;

    public CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) {
    public CellRangeAddress(RecordInputStream in) {

    public CellRangeAddress copy() {
    public static CellRangeAddress valueOf(String ref) {

    public String formatAsString() {
    public String formatAsString(String sheetName, boolean useAbsoluteAddress) {

    public void serialize(LittleEndianOutput out) {
    public static int getEncodedSize(int numberOfItems) {

    private static int readUShortAndCheck(RecordInputStream in) {

AbstractSheetWriteHandler

public abstract class AbstractSheetWriteHandler implements SheetWriteHandler {

    @Override
    public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

    }

    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

    }
}

SheetWriteHandler

public interface SheetWriteHandler extends WriteHandler {

    void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder);

    void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder);
}

WriteHandler

public interface WriteHandler extends Handler {
}

Handler

public interface Handler {
}

*****************

示例

Test

@Data
class Person{

    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}

class CustomSheetWriteHandler extends AbstractSheetWriteHandler{

    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        CellRangeAddressList list=new CellRangeAddressList(1,20,2,3); //1到20行、2到3列添加下拉框

        DataValidationHelper helper=writeSheetHolder.getSheet().getDataValidationHelper();
        DataValidationConstraint constraint=helper.createExplicitListConstraint(new String[]{"男","女"});
        DataValidation dataValidation=helper.createValidation(constraint,list);

        writeSheetHolder.getSheet().addValidationData(dataValidation);
    }
}

public class Test {

    private static final String write_path="e:"+ File.separator+"java"+File.separator+"easyexcel"+File.separator+"write4.xlsx";

    public static void write(){
        EasyExcel.write(write_path,Person.class).registerWriteHandler(new CustomSheetWriteHandler())
                .sheet().doWrite(data());
    }

    private static List<Person> data(){
        List<Person> list=new ArrayList<>();

        for (int i=0;i<5;i++){
            Person person=new Person();
            person.setId(i);
            person.setName("瓜田李下 "+i);
            person.setAge(20+i);

            list.add(person);
        }

        return list;
    }

    public static void main(String[] args){
        write();
    }
}

使用测试

                  

sex列添加下拉框成功,内容为:男、女

相关文章