ExcelWriterBuilder.java 8.0 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
    /**
     * Whether to automatically merge headers.Default is true.
     *
     * @param automaticMergeHead
     * @return
     */
    public ExcelWriterBuilder automaticMergeHead(Boolean automaticMergeHead) {
        writeWorkbook.setAutomaticMergeHead(automaticMergeHead);
        return this;
    }

庄家钜's avatar
庄家钜 已提交
105 106 107 108 109 110 111 112 113 114 115 116 117
    /**
     * 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;
    }

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 149 150 151 152 153 154 155 156 157 158 159
    /**
     * 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;
    }

160 161 162 163 164 165 166 167
    /**
     * 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 已提交
168 169 170 171 172
    /**
     * 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 已提交
173
     *
Z
zhuangjiaju 已提交
174 175 176 177 178 179
     * @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) {
180
        writeWorkbook.setConvertAllFiled(convertAllFiled);
Z
zhuangjiaju 已提交
181 182 183
        return this;
    }

Z
zhuangjiaju 已提交
184
    /**
185
     * Custom type conversions override the default.
Z
zhuangjiaju 已提交
186
     *
187 188
     * @param converter
     * @return
Z
zhuangjiaju 已提交
189
     */
190
    public ExcelWriterBuilder registerConverter(Converter converter) {
191 192
        if (writeWorkbook.getCustomConverterList() == null) {
            writeWorkbook.setCustomConverterList(new ArrayList<Converter>());
193
        }
194
        writeWorkbook.getCustomConverterList().add(converter);
195 196 197 198 199 200 201 202 203 204
        return this;
    }

    /**
     * Custom write handler
     *
     * @param writeHandler
     * @return
     */
    public ExcelWriterBuilder registerWriteHandler(WriteHandler writeHandler) {
205 206
        if (writeWorkbook.getCustomWriteHandlerList() == null) {
            writeWorkbook.setCustomWriteHandlerList(new ArrayList<WriteHandler>());
207
        }
208
        writeWorkbook.getCustomWriteHandlerList().add(writeHandler);
209 210
        return this;
    }
Z
zhuangjiaju 已提交
211 212

    public ExcelWriterBuilder excelType(ExcelTypeEnum excelType) {
213
        writeWorkbook.setExcelType(excelType);
Z
zhuangjiaju 已提交
214 215 216
        return this;
    }

217 218
    public ExcelWriterBuilder file(OutputStream outputStream) {
        writeWorkbook.setOutputStream(outputStream);
Z
zhuangjiaju 已提交
219 220 221
        return this;
    }

222
    public ExcelWriterBuilder file(File outputFile) {
Z
zhuangjiaju 已提交
223 224
        writeWorkbook.setFile(outputFile);
        return this;
Z
zhuangjiaju 已提交
225 226
    }

227 228
    public ExcelWriterBuilder file(String outputPathName) {
        return file(new File(outputPathName));
Z
zhuangjiaju 已提交
229 230
    }

231 232
    public ExcelWriterBuilder withTemplate(InputStream templateInputStream) {
        writeWorkbook.setTemplateInputStream(templateInputStream);
Z
zhuangjiaju 已提交
233 234 235
        return this;
    }

236 237
    public ExcelWriterBuilder withTemplate(File templateFile) {
        writeWorkbook.setTemplateFile(templateFile);
Z
zhuangjiaju 已提交
238
        return this;
Z
zhuangjiaju 已提交
239 240
    }

Z
zhuangjiaju 已提交
241 242
    public ExcelWriterBuilder withTemplate(String pathName) {
        return withTemplate(new File(pathName));
Z
zhuangjiaju 已提交
243 244
    }

Z
zhuangjiaju 已提交
245 246 247 248 249 250 251
    /**
     * Write handler
     *
     * @deprecated please use {@link WriteHandler}
     */
    @Deprecated
    public ExcelWriterBuilder registerWriteHandler(com.alibaba.excel.event.WriteHandler writeHandler) {
252
        writeWorkbook.setWriteHandler(writeHandler);
Z
zhuangjiaju 已提交
253 254 255
        return this;
    }

Z
zhuangjiaju 已提交
256
    public ExcelWriter build() {
257 258 259 260 261
        return new ExcelWriter(writeWorkbook);
    }

    public ExcelWriterSheetBuilder sheet() {
        return sheet(null, null);
Z
zhuangjiaju 已提交
262
    }
263 264 265 266 267 268 269 270 271 272

    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 已提交
273 274
        ExcelWriter excelWriter = build();
        ExcelWriterSheetBuilder excelWriterSheetBuilder = new ExcelWriterSheetBuilder(excelWriter);
275 276 277 278 279 280
        if (sheetNo != null) {
            excelWriterSheetBuilder.sheetNo(sheetNo);
        }
        if (sheetName != null) {
            excelWriterSheetBuilder.sheetName(sheetName);
        }
Z
zhuangjiaju 已提交
281
        return excelWriterSheetBuilder;
282 283
    }

Z
zhuangjiaju 已提交
284
}