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.

100 lines
2.8 KiB

7 years ago
package com.alibaba.excel;
import java.io.OutputStream;
import java.util.List;
import com.alibaba.excel.metadata.BaseRowModel;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.metadata.Table;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.ExcelBuilder;
import com.alibaba.excel.write.ExcelBuilderImpl;
/**
* 生成excelthread unsafe
*
* @author jipengfei
*/
public class ExcelWriter {
private ExcelBuilder excelBuilder;
7 years ago
/**
* 生成EXCEL
7 years ago
*
* @param outputStream 文件输出流
* @param typeEnum 输出文件类型03或07强烈建议使用07版可以输出超大excel而不内存溢出
*/
public ExcelWriter(OutputStream outputStream, ExcelTypeEnum typeEnum) {
this(outputStream, typeEnum, true);
}
/**
* 生成EXCEL
7 years ago
*
* @param outputStream 文件输出流
* @param typeEnum 输出文件类型03或07强烈建议使用07版可以输出超大excel而不内存溢出
7 years ago
* @param needHead 是否需要表头
7 years ago
*/
public ExcelWriter(OutputStream outputStream, ExcelTypeEnum typeEnum, boolean needHead) {
excelBuilder = new ExcelBuilderImpl();
excelBuilder.init(outputStream, typeEnum, needHead);
}
/**
* 生成多sheet,每个sheet一张表
*
* @param data 一行数据是一个BaseRowModel子类的模型
* @param sheet data写入某个sheet
* @return this当前引用
*/
public ExcelWriter write(List<? extends BaseRowModel> data, Sheet sheet) {
excelBuilder.addContent(data, sheet);
return this;
}
/**
* 生成多sheet,每个sheet一张表
*
7 years ago
* @param data List代表一行数据
7 years ago
* @param sheet data写入某个sheet
* @return this当前引用
*/
public ExcelWriter write0(List<List<String>> data, Sheet sheet) {
excelBuilder.addContent(data, sheet);
return this;
}
/**
* 可生成多sheet,每个sheet多张表
*
7 years ago
* @param data type 一个java模型一行数据
7 years ago
* @param sheet data写入某个sheet
* @param table data写入某个table
* @return this当前引用
*/
public ExcelWriter write(List<? extends BaseRowModel> data, Sheet sheet, Table table) {
excelBuilder.addContent(data, sheet, table);
return this;
}
/**
* 可生成多sheet,每个sheet多张表
*
7 years ago
* @param data List 代表一行数据
7 years ago
* @param sheet data写入某个sheet
* @param table data写入某个table
* @return this当前引用
*/
public ExcelWriter write0(List<List<String>> data, Sheet sheet, Table table) {
excelBuilder.addContent(data, sheet, table);
return this;
}
public void finish() {
excelBuilder.finish();
}
}