ExcelWriter.java 8.5 KB
Newer Older
J
update  
jipengfei.jpf 已提交
1 2
package com.alibaba.excel;

clevertension's avatar
clevertension 已提交
3 4
import java.io.InputStream;
import java.io.OutputStream;
Z
zhuangjiaju 已提交
5
import java.util.ArrayList;
clevertension's avatar
clevertension 已提交
6
import java.util.List;
Z
zhuangjiaju 已提交
7
import java.util.Map;
clevertension's avatar
clevertension 已提交
8 9

import com.alibaba.excel.converters.Converter;
Z
zhuangjiaju 已提交
10 11 12
import com.alibaba.excel.write.metadata.Sheet;
import com.alibaba.excel.write.metadata.Table;
import com.alibaba.excel.write.metadata.Workbook;
Z
zhuangjiaju 已提交
13
import com.alibaba.excel.parameter.GenerateParam;
J
update  
jipengfei.jpf 已提交
14 15 16
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.ExcelBuilder;
import com.alibaba.excel.write.ExcelBuilderImpl;
Z
zhuangjiaju 已提交
17
import com.alibaba.excel.write.handler.WriteHandler;
Z
zhuangjiaju 已提交
18
import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy;
19

J
update  
jipengfei.jpf 已提交
20
/**
Z
zhuangjiaju 已提交
21 22
 * Excel Writer This tool is used to write value out to Excel via POI. This object can perform the following two
 * functions.
clevertension's avatar
clevertension 已提交
23
 * 
24
 * <pre>
clevertension's avatar
clevertension 已提交
25
 *    1. Create a new empty Excel workbook, write the value to the stream after the value is filled.
26
 *    2. Edit existing Excel, write the original Excel file, or write it to other places.}
27
 * </pre>
clevertension's avatar
clevertension 已提交
28
 * 
J
update  
jipengfei.jpf 已提交
29 30 31 32 33 34
 * @author jipengfei
 */
public class ExcelWriter {
    private ExcelBuilder excelBuilder;

    /**
35
     * Create new writer
Z
zhuangjiaju 已提交
36
     *
Z
zhuangjiaju 已提交
37 38 39 40 41 42 43 44 45 46
     * @param templateInputStream
     *            Append value after a POI file ,Can be null(the template POI filesystem that contains the Workbook
     *            stream)
     * @param outputStream
     *            the java OutputStream you wish to write the value to
     * @param excelType
     *            03 or 07
     * @param needHead
     * @param customConverterMap
     * @param customWriteHandlerList
J
update  
jipengfei.jpf 已提交
47
     */
Z
zhuangjiaju 已提交
48 49
    public ExcelWriter(InputStream templateInputStream, OutputStream outputStream, ExcelTypeEnum excelType,
        boolean needHead, Map<Class, Converter> customConverterMap, List<WriteHandler> customWriteHandlerList) {
Z
zhuangjiaju 已提交
50
        Workbook workbook = new Workbook();
Z
zhuangjiaju 已提交
51
        workbook.setInputStream(templateInputStream);
Z
zhuangjiaju 已提交
52 53 54 55 56 57
        workbook.setOutputStream(outputStream);
        workbook.setExcelType(excelType);
        workbook.setNeedHead(needHead);
        workbook.setCustomConverterMap(customConverterMap);
        workbook.setCustomWriteHandlerList(customWriteHandlerList);
        excelBuilder = new ExcelBuilderImpl(workbook);
J
update  
jipengfei.jpf 已提交
58 59
    }

Z
zhuangjiaju 已提交
60 61 62 63 64 65 66 67 68
    /**
     * Create new writer
     * 
     * @param workbook
     */
    public ExcelWriter(Workbook workbook) {
        excelBuilder = new ExcelBuilderImpl(workbook);
    }

69
    /**
Z
zhuangjiaju 已提交
70 71 72 73 74 75 76
     * Create new writer
     *
     * @param outputStream
     *            the java OutputStream you wish to write the value to
     * @param typeEnum
     *            03 or 07
     * @deprecated please use {@link com.alibaba.excel.write.builder.ExcelWriterBuilder} build ExcelWriter
77 78
     */
    @Deprecated
Z
zhuangjiaju 已提交
79 80
    public ExcelWriter(OutputStream outputStream, ExcelTypeEnum typeEnum) {
        this(outputStream, typeEnum, true);
81 82
    }

J
update  
jipengfei.jpf 已提交
83 84
    /**
     *
85
     * Create new writer
Z
zhuangjiaju 已提交
86 87 88 89 90 91 92 93
     *
     * @param outputStream
     *            the java OutputStream you wish to write the value to
     * @param typeEnum
     *            03 or 07
     * @param needHead
     *            Do you need to write the header to the file?
     * @deprecated please use {@link com.alibaba.excel.write.builder.ExcelWriterBuilder} build ExcelWriter
J
update  
jipengfei.jpf 已提交
94
     */
Z
zhuangjiaju 已提交
95
    @Deprecated
J
update  
jipengfei.jpf 已提交
96
    public ExcelWriter(OutputStream outputStream, ExcelTypeEnum typeEnum, boolean needHead) {
clevertension's avatar
clevertension 已提交
97
        this(null, outputStream, typeEnum, needHead, null, null);
J
update  
jipengfei.jpf 已提交
98 99 100
    }

    /**
clevertension's avatar
clevertension 已提交
101
     * Create new writer
Z
zhuangjiaju 已提交
102 103 104 105 106 107 108 109 110
     *
     * @param templateInputStream
     *            Append value after a POI file ,Can be null(the template POI filesystem that contains the Workbook
     *            stream)
     * @param outputStream
     *            the java OutputStream you wish to write the value to
     * @param typeEnum
     *            03 or 07
     * @deprecated please use {@link com.alibaba.excel.write.builder.ExcelWriterBuilder} build ExcelWriter
111
     */
Z
zhuangjiaju 已提交
112
    @Deprecated
clevertension's avatar
clevertension 已提交
113
    public ExcelWriter(InputStream templateInputStream, OutputStream outputStream, ExcelTypeEnum typeEnum,
Z
zhuangjiaju 已提交
114
        Boolean needHead) {
clevertension's avatar
clevertension 已提交
115
        this(templateInputStream, outputStream, typeEnum, needHead, null, null);
116 117 118
    }

    /**
clevertension's avatar
clevertension 已提交
119
     * Create new writer
Z
zhuangjiaju 已提交
120 121 122 123 124 125 126 127 128 129 130
     *
     * @param templateInputStream
     *            Append value after a POI file ,Can be null(the template POI filesystem that contains the Workbook
     *            stream)
     * @param outputStream
     *            the java OutputStream you wish to write the value to
     * @param typeEnum
     *            03 or 07
     * @param writeHandler
     *            User-defined callback
     * @deprecated please use {@link com.alibaba.excel.write.builder.ExcelWriterBuilder} build ExcelWriter
131
     */
Z
zhuangjiaju 已提交
132
    @Deprecated
clevertension's avatar
clevertension 已提交
133
    public ExcelWriter(InputStream templateInputStream, OutputStream outputStream, ExcelTypeEnum typeEnum,
Z
zhuangjiaju 已提交
134 135 136
        Boolean needHead, WriteHandler writeHandler) {
        List<WriteHandler> customWriteHandlerList = new ArrayList<WriteHandler>();
        customWriteHandlerList.add(writeHandler);
Z
zhuangjiaju 已提交
137
        Workbook workbook = new Workbook();
Z
zhuangjiaju 已提交
138
        workbook.setInputStream(templateInputStream);
Z
zhuangjiaju 已提交
139 140 141 142 143 144 145 146 147 148 149 150 151 152
        workbook.setOutputStream(outputStream);
        workbook.setExcelType(typeEnum);
        workbook.setNeedHead(needHead);
        workbook.setCustomWriteHandlerList(customWriteHandlerList);
        excelBuilder = new ExcelBuilderImpl(workbook);
    }

    /**
     * @param generateParam
     * @deprecated please use {@link com.alibaba.excel.write.builder.ExcelWriterBuilder} build ExcelWriter
     */
    @Deprecated
    public ExcelWriter(GenerateParam generateParam) {
        this(generateParam.getOutputStream(), generateParam.getType(), true);
clevertension's avatar
clevertension 已提交
153 154
    }

155
    /**
Z
zhuangjiaju 已提交
156 157 158 159 160 161
     * Write data to a sheet
     *
     * @param data
     *            Data to be written
     * @param sheet
     *            Write to this sheet
162
     * @return this current writer
J
update  
jipengfei.jpf 已提交
163
     */
Z
zhuangjiaju 已提交
164 165
    public ExcelWriter write(List data, Sheet sheet) {
        return write(data, sheet, null);
J
update  
jipengfei.jpf 已提交
166 167
    }

168
    /**
clevertension's avatar
clevertension 已提交
169
     * Write value to a sheet
Z
zhuangjiaju 已提交
170 171 172 173 174 175 176 177
     *
     * @param data
     *            Data to be written
     * @param sheet
     *            Write to this sheet
     * @param table
     *            Write to this table
     * @return this
178
     */
Z
zhuangjiaju 已提交
179
    public ExcelWriter write(List data, Sheet sheet, Table table) {
Z
zhuangjiaju 已提交
180 181
        excelBuilder.addContent(data, sheet, table);
        return this;
182 183
    }

J
update  
jipengfei.jpf 已提交
184 185
    /**
     *
clevertension's avatar
clevertension 已提交
186
     * Write value to a sheet
Z
zhuangjiaju 已提交
187 188 189 190 191
     *
     * @param data
     *            Data to be written
     * @param sheet
     *            Write to this sheet
192
     * @return this
Z
zhuangjiaju 已提交
193
     * @deprecated please use {@link ExcelWriter#write(List, Sheet)}
J
update  
jipengfei.jpf 已提交
194
     */
Z
zhuangjiaju 已提交
195
    @Deprecated
Z
zhuangjiaju 已提交
196 197
    public ExcelWriter write1(List data, Sheet sheet) {
        return write(data, sheet);
J
update  
jipengfei.jpf 已提交
198 199 200
    }

    /**
clevertension's avatar
clevertension 已提交
201
     * Write value to a sheet
Z
zhuangjiaju 已提交
202 203 204 205 206
     *
     * @param data
     *            Data to be written
     * @param sheet
     *            Write to this sheet
Z
zhuangjiaju 已提交
207
     * @deprecated please use {@link ExcelWriter#write(List, Sheet)}
J
update  
jipengfei.jpf 已提交
208
     */
Z
zhuangjiaju 已提交
209
    @Deprecated
Z
zhuangjiaju 已提交
210 211
    public ExcelWriter write0(List data, Sheet sheet) {
        return write(data, sheet);
212 213
    }

214
    /**
clevertension's avatar
clevertension 已提交
215
     * Write value to a sheet
Z
zhuangjiaju 已提交
216 217 218 219 220 221 222
     *
     * @param data
     *            Data to be written
     * @param sheet
     *            Write to this sheet
     * @param table
     *            Write to this table
Z
zhuangjiaju 已提交
223
     * @deprecated please use {@link ExcelWriter#write(List, Sheet,Table)}
224
     */
Z
zhuangjiaju 已提交
225
    @Deprecated
Z
zhuangjiaju 已提交
226 227 228
    public ExcelWriter write0(List data, Sheet sheet, Table table) {
        return write(data, sheet, table);

J
update  
jipengfei.jpf 已提交
229 230
    }

231
    /**
clevertension's avatar
clevertension 已提交
232
     * Write value to a sheet
Z
zhuangjiaju 已提交
233 234 235 236 237 238 239
     *
     * @param data
     *            Data to be written
     * @param sheet
     *            Write to this sheet
     * @param table
     *            Write to this table
Z
zhuangjiaju 已提交
240
     * @deprecated please use {@link ExcelWriter#write(List, Sheet,Table)}
241
     */
Z
zhuangjiaju 已提交
242
    @Deprecated
Z
zhuangjiaju 已提交
243 244 245
    public ExcelWriter write1(List data, Sheet sheet, Table table) {
        return write(data, sheet, table);

246 247
    }

Z
zhuangjiaju 已提交
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
    /**
     * Merge Cells,Indexes are zero-based.
     *
     * @param firstRow
     *            Index of first row
     * @param lastRow
     *            Index of last row (inclusive), must be equal to or larger than {@code firstRow}
     * @param firstCol
     *            Index of first column
     * @param lastCol
     *            Index of last column (inclusive), must be equal to or larger than {@code firstCol}
     * @deprecated please use{@link OnceAbsoluteMergeStrategy}
     */
    @Deprecated
    public ExcelWriter merge(int firstRow, int lastRow, int firstCol, int lastCol) {
        excelBuilder.merge(firstRow, lastRow, firstCol, lastCol);
        return this;
    }

267 268 269
    /**
     * Close IO
     */
J
update  
jipengfei.jpf 已提交
270 271 272
    public void finish() {
        excelBuilder.finish();
    }
Z
zhuangjiaju 已提交
273

J
update  
jipengfei.jpf 已提交
274
}