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

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.converters.Converter;
14
import com.alibaba.excel.exception.ExcelGenerateException;
Z
zhuangjiaju 已提交
15 16
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.handler.WriteHandler;
17
import com.alibaba.excel.write.metadata.WriteWorkbook;
Z
zhuangjiaju 已提交
18 19 20 21 22 23 24 25

/**
 * Build ExcelBuilder
 * 
 * @author zhuangjiaju
 */
public class ExcelWriterBuilder {
    /**
26
     * Workbook
Z
zhuangjiaju 已提交
27
     */
28
    private WriteWorkbook writeWorkbook;
29 30

    public ExcelWriterBuilder() {
31
        this.writeWorkbook = new WriteWorkbook();
32 33
    }

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

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

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

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

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

Z
zhuangjiaju 已提交
86 87 88 89 90 91 92 93 94 95 96 97
    /**
     * 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
     * 
     * @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) {
98
        writeWorkbook.setConvertAllFiled(convertAllFiled);
Z
zhuangjiaju 已提交
99 100 101
        return this;
    }

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

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

    public ExcelWriterBuilder excelType(ExcelTypeEnum excelType) {
131
        writeWorkbook.setExcelType(excelType);
Z
zhuangjiaju 已提交
132 133 134
        return this;
    }

135 136
    public ExcelWriterBuilder file(OutputStream outputStream) {
        writeWorkbook.setOutputStream(outputStream);
Z
zhuangjiaju 已提交
137 138 139
        return this;
    }

140
    public ExcelWriterBuilder file(File outputFile) {
141
        try {
142
            return file(new FileOutputStream(outputFile));
143 144 145
        } catch (FileNotFoundException e) {
            throw new ExcelGenerateException("Can not create file", e);
        }
Z
zhuangjiaju 已提交
146 147
    }

148 149
    public ExcelWriterBuilder file(String outputPathName) {
        return file(new File(outputPathName));
Z
zhuangjiaju 已提交
150 151
    }

152
    public ExcelWriterBuilder file(URI outputUri) {
153
        return file(new File(outputUri));
Z
zhuangjiaju 已提交
154 155
    }

156 157
    public ExcelWriterBuilder withTemplate(InputStream templateInputStream) {
        writeWorkbook.setTemplateInputStream(templateInputStream);
Z
zhuangjiaju 已提交
158 159 160
        return this;
    }

161 162
    public ExcelWriterBuilder withTemplate(File templateFile) {
        writeWorkbook.setTemplateFile(templateFile);
Z
zhuangjiaju 已提交
163
        return this;
Z
zhuangjiaju 已提交
164 165
    }

Z
zhuangjiaju 已提交
166 167
    public ExcelWriterBuilder withTemplate(String pathName) {
        return withTemplate(new File(pathName));
Z
zhuangjiaju 已提交
168 169
    }

Z
zhuangjiaju 已提交
170 171
    public ExcelWriterBuilder withTemplate(URI uri) {
        return withTemplate(new File(uri));
Z
zhuangjiaju 已提交
172 173
    }

Z
zhuangjiaju 已提交
174 175 176 177 178 179 180
    /**
     * Write handler
     *
     * @deprecated please use {@link WriteHandler}
     */
    @Deprecated
    public ExcelWriterBuilder registerWriteHandler(com.alibaba.excel.event.WriteHandler writeHandler) {
181
        writeWorkbook.setWriteHandler(writeHandler);
Z
zhuangjiaju 已提交
182 183 184
        return this;
    }

Z
zhuangjiaju 已提交
185
    public ExcelWriter build() {
186 187 188 189 190
        return new ExcelWriter(writeWorkbook);
    }

    public ExcelWriterSheetBuilder sheet() {
        return sheet(null, null);
Z
zhuangjiaju 已提交
191
    }
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211

    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) {
        ExcelWriterSheetBuilder excelWriterSheetBuilder = new ExcelWriterSheetBuilder(build());
        if (sheetNo != null) {
            excelWriterSheetBuilder.sheetNo(sheetNo);
        }
        if (sheetName != null) {
            excelWriterSheetBuilder.sheetName(sheetName);
        }
        return new ExcelWriterSheetBuilder(build());
    }

Z
zhuangjiaju 已提交
212
}