ExcelWriterBuilder.java 7.7 KB
Newer Older
Z
zhuangjiaju 已提交
1 2 3 4 5 6
package com.alibaba.excel.write.builder;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
7
import java.util.Collection;
Z
zhuangjiaju 已提交
8 9 10 11 12 13
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;
14
import com.alibaba.excel.write.metadata.WriteWorkbook;
Z
zhuangjiaju 已提交
15 16 17

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

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

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

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

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

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

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

庄家钜's avatar
庄家钜 已提交
83 84 85 86 87 88 89 90 91 92 93
    /**
     * Use the default style.Default is true.
     *
     * @param useDefaultStyle
     * @return
     */
    public ExcelWriterBuilder useDefaultStyle(Boolean useDefaultStyle) {
        writeWorkbook.setUseDefaultStyle(useDefaultStyle);
        return this;
    }

庄家钜's avatar
庄家钜 已提交
94 95 96 97 98 99 100 101 102 103 104 105 106
    /**
     * Whether the encryption.
     * <p>
     * WARRING:Encryption is when the entire file is read into memory, so it is very memory intensive.
     *
     * @param password
     * @return
     */
    public ExcelWriterBuilder password(String password) {
        writeWorkbook.setPassword(password);
        return this;
    }

107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
    /**
     * Write excel in memory. Default false,the cache file is created and finally written to excel.
     * <p>
     * Comment and RichTextString are only supported in memory mode.
     */
    public ExcelWriterBuilder inMemory(Boolean inMemory) {
        writeWorkbook.setInMemory(inMemory);
        return this;
    }

    /**
     * Ignore the custom columns.
     */
    public ExcelWriterBuilder excludeColumnIndexes(Collection<Integer> excludeColumnIndexes) {
        writeWorkbook.setExcludeColumnIndexes(excludeColumnIndexes);
        return this;
    }

    /**
     * Ignore the custom columns.
     */
    public ExcelWriterBuilder excludeColumnFiledNames(Collection<String> excludeColumnFiledNames) {
        writeWorkbook.setExcludeColumnFiledNames(excludeColumnFiledNames);
        return this;
    }

    /**
     * Only output the custom columns.
     */
    public ExcelWriterBuilder includeColumnIndexes(Collection<Integer> includeColumnIndexes) {
        writeWorkbook.setIncludeColumnIndexes(includeColumnIndexes);
        return this;
    }

    /**
     * Only output the custom columns.
     */
    public ExcelWriterBuilder includeColumnFiledNames(Collection<String> includeColumnFiledNames) {
        writeWorkbook.setIncludeColumnFiledNames(includeColumnFiledNames);
        return this;
    }

149 150 151 152 153 154 155 156
    /**
     * Excel is also written in the event of an exception being thrown.The default false.
     */
    public ExcelWriterBuilder writeExcelOnException(Boolean writeExcelOnException) {
        writeWorkbook.setWriteExcelOnException(writeExcelOnException);
        return this;
    }

Z
zhuangjiaju 已提交
157 158 159 160 161
    /**
     * 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 已提交
162
     *
Z
zhuangjiaju 已提交
163 164 165 166 167 168
     * @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) {
169
        writeWorkbook.setConvertAllFiled(convertAllFiled);
Z
zhuangjiaju 已提交
170 171 172
        return this;
    }

Z
zhuangjiaju 已提交
173
    /**
174
     * Custom type conversions override the default.
Z
zhuangjiaju 已提交
175
     *
176 177
     * @param converter
     * @return
Z
zhuangjiaju 已提交
178
     */
179
    public ExcelWriterBuilder registerConverter(Converter converter) {
180 181
        if (writeWorkbook.getCustomConverterList() == null) {
            writeWorkbook.setCustomConverterList(new ArrayList<Converter>());
182
        }
183
        writeWorkbook.getCustomConverterList().add(converter);
184 185 186 187 188 189 190 191 192 193
        return this;
    }

    /**
     * Custom write handler
     *
     * @param writeHandler
     * @return
     */
    public ExcelWriterBuilder registerWriteHandler(WriteHandler writeHandler) {
194 195
        if (writeWorkbook.getCustomWriteHandlerList() == null) {
            writeWorkbook.setCustomWriteHandlerList(new ArrayList<WriteHandler>());
196
        }
197
        writeWorkbook.getCustomWriteHandlerList().add(writeHandler);
198 199
        return this;
    }
Z
zhuangjiaju 已提交
200 201

    public ExcelWriterBuilder excelType(ExcelTypeEnum excelType) {
202
        writeWorkbook.setExcelType(excelType);
Z
zhuangjiaju 已提交
203 204 205
        return this;
    }

206 207
    public ExcelWriterBuilder file(OutputStream outputStream) {
        writeWorkbook.setOutputStream(outputStream);
Z
zhuangjiaju 已提交
208 209 210
        return this;
    }

211
    public ExcelWriterBuilder file(File outputFile) {
Z
zhuangjiaju 已提交
212 213
        writeWorkbook.setFile(outputFile);
        return this;
Z
zhuangjiaju 已提交
214 215
    }

216 217
    public ExcelWriterBuilder file(String outputPathName) {
        return file(new File(outputPathName));
Z
zhuangjiaju 已提交
218 219
    }

220 221
    public ExcelWriterBuilder withTemplate(InputStream templateInputStream) {
        writeWorkbook.setTemplateInputStream(templateInputStream);
Z
zhuangjiaju 已提交
222 223 224
        return this;
    }

225 226
    public ExcelWriterBuilder withTemplate(File templateFile) {
        writeWorkbook.setTemplateFile(templateFile);
Z
zhuangjiaju 已提交
227
        return this;
Z
zhuangjiaju 已提交
228 229
    }

Z
zhuangjiaju 已提交
230 231
    public ExcelWriterBuilder withTemplate(String pathName) {
        return withTemplate(new File(pathName));
Z
zhuangjiaju 已提交
232 233
    }

Z
zhuangjiaju 已提交
234 235 236 237 238 239 240
    /**
     * Write handler
     *
     * @deprecated please use {@link WriteHandler}
     */
    @Deprecated
    public ExcelWriterBuilder registerWriteHandler(com.alibaba.excel.event.WriteHandler writeHandler) {
241
        writeWorkbook.setWriteHandler(writeHandler);
Z
zhuangjiaju 已提交
242 243 244
        return this;
    }

Z
zhuangjiaju 已提交
245
    public ExcelWriter build() {
246 247 248 249 250
        return new ExcelWriter(writeWorkbook);
    }

    public ExcelWriterSheetBuilder sheet() {
        return sheet(null, null);
Z
zhuangjiaju 已提交
251
    }
252 253 254 255 256 257 258 259 260 261

    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 已提交
262 263
        ExcelWriter excelWriter = build();
        ExcelWriterSheetBuilder excelWriterSheetBuilder = new ExcelWriterSheetBuilder(excelWriter);
264 265 266 267 268 269
        if (sheetNo != null) {
            excelWriterSheetBuilder.sheetNo(sheetNo);
        }
        if (sheetName != null) {
            excelWriterSheetBuilder.sheetName(sheetName);
        }
Z
zhuangjiaju 已提交
270
        return excelWriterSheetBuilder;
271 272
    }

Z
zhuangjiaju 已提交
273
}