You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

190 lines
5.9 KiB

7 years ago
package com.alibaba.excel;
import com.alibaba.excel.event.WriteHandler;
7 years ago
import com.alibaba.excel.metadata.BaseRowModel;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.metadata.Table;
import com.alibaba.excel.parameter.GenerateParam;
7 years ago
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.ExcelBuilder;
import com.alibaba.excel.write.ExcelBuilderImpl;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
7 years ago
/**
* Excel Writer This tool is used to write data out to Excel via POI.
* This object can perform the following two functions.
* <pre>
* 1. Create a new empty Excel workbook, write the data to the stream after the data is filled.
* 2. Edit existing Excel, write the original Excel file, or write it to other places.}
* </pre>
7 years ago
* @author jipengfei
*/
public class ExcelWriter {
private ExcelBuilder excelBuilder;
/**
* Create new writer
* @param outputStream the java OutputStream you wish to write the data to
* @param typeEnum 03 or 07
7 years ago
*/
public ExcelWriter(OutputStream outputStream, ExcelTypeEnum typeEnum) {
this(outputStream, typeEnum, true);
}
@Deprecated
private Class<? extends BaseRowModel> objectClass;
/**
* @param generateParam
*/
@Deprecated
public ExcelWriter(GenerateParam generateParam) {
this(generateParam.getOutputStream(), generateParam.getType(), true);
this.objectClass = generateParam.getClazz();
}
7 years ago
/**
*
* Create new writer
* @param outputStream the java OutputStream you wish to write the data to
* @param typeEnum 03 or 07
* @param needHead Do you need to write the header to the file?
7 years ago
*/
public ExcelWriter(OutputStream outputStream, ExcelTypeEnum typeEnum, boolean needHead) {
excelBuilder = new ExcelBuilderImpl(null, outputStream, typeEnum, needHead, null);
7 years ago
}
/**
* Create new writer
* @param templateInputStream Append data after a POI file ,Can be nullthe template POI filesystem that contains the Workbook stream)
* @param outputStream the java OutputStream you wish to write the data to
* @param typeEnum 03 or 07
*/
public ExcelWriter(InputStream templateInputStream, OutputStream outputStream, ExcelTypeEnum typeEnum,Boolean needHead) {
excelBuilder = new ExcelBuilderImpl(templateInputStream,outputStream, typeEnum, needHead, null);
}
/**
* Create new writer
* @param templateInputStream Append data after a POI file ,Can be nullthe template POI filesystem that contains the Workbook stream)
* @param outputStream the java OutputStream you wish to write the data to
* @param typeEnum 03 or 07
* @param writeHandler User-defined callback
*/
public ExcelWriter(InputStream templateInputStream, OutputStream outputStream, ExcelTypeEnum typeEnum, Boolean needHead,
WriteHandler writeHandler) {
excelBuilder = new ExcelBuilderImpl(templateInputStream,outputStream, typeEnum, needHead,writeHandler);
}
/**
* Write data to a sheet
* @param data Data to be written
* @param sheet Write to this sheet
* @return this current writer
7 years ago
*/
public ExcelWriter write(List<? extends BaseRowModel> data, Sheet sheet) {
excelBuilder.addContent(data, sheet);
return this;
}
/**
* Write data to a sheet
* @param data Data to be written
* @return this current writer
*/
@Deprecated
public ExcelWriter write(List data) {
if (objectClass != null) {
return this.write(data,new Sheet(1,0,objectClass));
}else {
return this.write0(data,new Sheet(1,0,objectClass));
}
}
7 years ago
/**
*
* Write data to a sheet
* @param data Data to be written
* @param sheet Write to this sheet
* @return this
7 years ago
*/
public ExcelWriter write1(List<List<Object>> data, Sheet sheet) {
7 years ago
excelBuilder.addContent(data, sheet);
return this;
}
/**
* Write data to a sheet
* @param data Data to be written
* @param sheet Write to this sheet
* @return this
7 years ago
*/
public ExcelWriter write0(List<List<String>> data, Sheet sheet) {
excelBuilder.addContent(data, sheet);
return this;
}
/**
* Write data to a sheet
* @param data Data to be written
* @param sheet Write to this sheet
* @param table Write to this table
* @return this
*/
7 years ago
public ExcelWriter write(List<? extends BaseRowModel> data, Sheet sheet, Table table) {
excelBuilder.addContent(data, sheet, table);
return this;
}
/**
* Write data to a sheet
* @param data Data to be written
* @param sheet Write to this sheet
* @param table Write to this table
* @return this
*/
7 years ago
public ExcelWriter write0(List<List<String>> data, Sheet sheet, Table table) {
excelBuilder.addContent(data, sheet, table);
return this;
}
/**
* Merge CellsIndexes 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}
*/
public ExcelWriter merge(int firstRow, int lastRow, int firstCol, int lastCol){
excelBuilder.merge(firstRow,lastRow,firstCol,lastCol);
return this;
}
/**
* Write data to a sheet
* @param data Data to be written
* @param sheet Write to this sheet
* @param table Write to this table
* @return
*/
public ExcelWriter write1(List<List<Object>> data, Sheet sheet, Table table) {
excelBuilder.addContent(data, sheet, table);
return this;
}
/**
* Close IO
*/
7 years ago
public void finish() {
excelBuilder.finish();
}
}