ExcelWriterBuilder.java 5.5 KB
Newer Older
Z
zhuangjiaju 已提交
1 2 3 4 5 6 7 8 9 10 11 12
package com.alibaba.excel.write.builder;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.handler.WriteHandler;
13
import com.alibaba.excel.write.metadata.WriteWorkbook;
Z
zhuangjiaju 已提交
14 15 16

/**
 * Build ExcelBuilder
Z
zhuangjiaju 已提交
17
 *
Z
zhuangjiaju 已提交
18
 * @author Jiaju Zhuang
Z
zhuangjiaju 已提交
19 20 21
 */
public class ExcelWriterBuilder {
    /**
22
     * Workbook
Z
zhuangjiaju 已提交
23
     */
24
    private WriteWorkbook writeWorkbook;
25 26

    public ExcelWriterBuilder() {
27
        this.writeWorkbook = new WriteWorkbook();
28 29
    }

Z
zhuangjiaju 已提交
30
    /**
31 32
     * Writes the head relative to the existing contents of the sheet. Indexes are zero-based.
     *
33
     * @param relativeHeadRowIndex
34
     * @return
Z
zhuangjiaju 已提交
35
     */
36 37
    public ExcelWriterBuilder relativeHeadRowIndex(Integer relativeHeadRowIndex) {
        writeWorkbook.setRelativeHeadRowIndex(relativeHeadRowIndex);
38 39 40
        return this;
    }

Z
zhuangjiaju 已提交
41
    /**
Z
zhuangjiaju 已提交
42
     * You can only choose one of the {@link ExcelWriterBuilder#head(List)} and {@link ExcelWriterBuilder#head(Class)}
43 44 45
     *
     * @param head
     * @return
Z
zhuangjiaju 已提交
46
     */
47
    public ExcelWriterBuilder head(List<List<String>> head) {
48
        writeWorkbook.setHead(head);
49 50 51
        return this;
    }

Z
zhuangjiaju 已提交
52
    /**
Z
zhuangjiaju 已提交
53
     * You can only choose one of the {@link ExcelWriterBuilder#head(List)} and {@link ExcelWriterBuilder#head(Class)}
54 55 56
     *
     * @param clazz
     * @return
Z
zhuangjiaju 已提交
57
     */
58
    public ExcelWriterBuilder head(Class clazz) {
59
        writeWorkbook.setClazz(clazz);
60 61 62
        return this;
    }

Z
zhuangjiaju 已提交
63 64 65
    /**
     * Need Head
     */
66
    public ExcelWriterBuilder needHead(Boolean needHead) {
67
        writeWorkbook.setNeedHead(needHead);
68 69 70
        return this;
    }

Z
zhuangjiaju 已提交
71
    /**
72 73 74 75
     * Default true
     *
     * @param autoCloseStream
     * @return
Z
zhuangjiaju 已提交
76
     */
77
    public ExcelWriterBuilder autoCloseStream(Boolean autoCloseStream) {
78
        writeWorkbook.setAutoCloseStream(autoCloseStream);
79 80 81
        return this;
    }

Z
zhuangjiaju 已提交
82 83 84 85 86
    /**
     * The default is all excel objects.if true , you can use {@link com.alibaba.excel.annotation.ExcelIgnore} ignore a
     * field. if false , you must use {@link com.alibaba.excel.annotation.ExcelProperty} to use a filed.
     * <p>
     * Default true
Z
zhuangjiaju 已提交
87
     *
Z
zhuangjiaju 已提交
88 89 90 91 92 93
     * @param convertAllFiled
     * @return
     * @deprecated Just to be compatible with historical data, The default is always going to be convert all filed.
     */
    @Deprecated
    public ExcelWriterBuilder convertAllFiled(Boolean convertAllFiled) {
94
        writeWorkbook.setConvertAllFiled(convertAllFiled);
Z
zhuangjiaju 已提交
95 96 97
        return this;
    }

Z
zhuangjiaju 已提交
98
    /**
99
     * Custom type conversions override the default.
Z
zhuangjiaju 已提交
100
     *
101 102
     * @param converter
     * @return
Z
zhuangjiaju 已提交
103
     */
104
    public ExcelWriterBuilder registerConverter(Converter converter) {
105 106
        if (writeWorkbook.getCustomConverterList() == null) {
            writeWorkbook.setCustomConverterList(new ArrayList<Converter>());
107
        }
108
        writeWorkbook.getCustomConverterList().add(converter);
109 110 111 112 113 114 115 116 117 118
        return this;
    }

    /**
     * Custom write handler
     *
     * @param writeHandler
     * @return
     */
    public ExcelWriterBuilder registerWriteHandler(WriteHandler writeHandler) {
119 120
        if (writeWorkbook.getCustomWriteHandlerList() == null) {
            writeWorkbook.setCustomWriteHandlerList(new ArrayList<WriteHandler>());
121
        }
122
        writeWorkbook.getCustomWriteHandlerList().add(writeHandler);
123 124
        return this;
    }
Z
zhuangjiaju 已提交
125 126

    public ExcelWriterBuilder excelType(ExcelTypeEnum excelType) {
127
        writeWorkbook.setExcelType(excelType);
Z
zhuangjiaju 已提交
128 129 130
        return this;
    }

131 132
    public ExcelWriterBuilder file(OutputStream outputStream) {
        writeWorkbook.setOutputStream(outputStream);
Z
zhuangjiaju 已提交
133 134 135
        return this;
    }

136
    public ExcelWriterBuilder file(File outputFile) {
Z
zhuangjiaju 已提交
137 138
        writeWorkbook.setFile(outputFile);
        return this;
Z
zhuangjiaju 已提交
139 140
    }

141 142
    public ExcelWriterBuilder file(String outputPathName) {
        return file(new File(outputPathName));
Z
zhuangjiaju 已提交
143 144
    }

145 146
    public ExcelWriterBuilder withTemplate(InputStream templateInputStream) {
        writeWorkbook.setTemplateInputStream(templateInputStream);
Z
zhuangjiaju 已提交
147 148 149
        return this;
    }

150 151
    public ExcelWriterBuilder withTemplate(File templateFile) {
        writeWorkbook.setTemplateFile(templateFile);
Z
zhuangjiaju 已提交
152
        return this;
Z
zhuangjiaju 已提交
153 154
    }

Z
zhuangjiaju 已提交
155 156
    public ExcelWriterBuilder withTemplate(String pathName) {
        return withTemplate(new File(pathName));
Z
zhuangjiaju 已提交
157 158
    }

Z
zhuangjiaju 已提交
159 160 161 162 163 164 165
    /**
     * Write handler
     *
     * @deprecated please use {@link WriteHandler}
     */
    @Deprecated
    public ExcelWriterBuilder registerWriteHandler(com.alibaba.excel.event.WriteHandler writeHandler) {
166
        writeWorkbook.setWriteHandler(writeHandler);
Z
zhuangjiaju 已提交
167 168 169
        return this;
    }

Z
zhuangjiaju 已提交
170
    public ExcelWriter build() {
171 172 173 174 175
        return new ExcelWriter(writeWorkbook);
    }

    public ExcelWriterSheetBuilder sheet() {
        return sheet(null, null);
Z
zhuangjiaju 已提交
176
    }
177 178 179 180 181 182 183 184 185 186

    public ExcelWriterSheetBuilder sheet(Integer sheetNo) {
        return sheet(sheetNo, null);
    }

    public ExcelWriterSheetBuilder sheet(String sheetName) {
        return sheet(null, sheetName);
    }

    public ExcelWriterSheetBuilder sheet(Integer sheetNo, String sheetName) {
Z
zhuangjiaju 已提交
187 188
        ExcelWriter excelWriter = build();
        ExcelWriterSheetBuilder excelWriterSheetBuilder = new ExcelWriterSheetBuilder(excelWriter);
189 190 191 192 193 194
        if (sheetNo != null) {
            excelWriterSheetBuilder.sheetNo(sheetNo);
        }
        if (sheetName != null) {
            excelWriterSheetBuilder.sheetName(sheetName);
        }
Z
zhuangjiaju 已提交
195
        return excelWriterSheetBuilder;
196 197
    }

Z
zhuangjiaju 已提交
198
}