package com.alibaba.excel.write.builder; import java.util.ArrayList; import java.util.Collection; import java.util.List; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.exception.ExcelGenerateException; import com.alibaba.excel.write.handler.WriteHandler; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillConfig; /** * Build sheet * * @author Jiaju Zhuang */ public class ExcelWriterSheetBuilder { private ExcelWriter excelWriter; /** * Sheet */ private WriteSheet writeSheet; public ExcelWriterSheetBuilder() { this.writeSheet = new WriteSheet(); } public ExcelWriterSheetBuilder(ExcelWriter excelWriter) { this.writeSheet = new WriteSheet(); this.excelWriter = excelWriter; } /** * Writes the head relative to the existing contents of the sheet. Indexes are zero-based. * * @param relativeHeadRowIndex * @return */ public ExcelWriterSheetBuilder relativeHeadRowIndex(Integer relativeHeadRowIndex) { writeSheet.setRelativeHeadRowIndex(relativeHeadRowIndex); return this; } /** * You can only choose one of the {@link ExcelWriterSheetBuilder#head(List)} and * {@link ExcelWriterSheetBuilder#head(Class)} * * @param head * @return */ public ExcelWriterSheetBuilder head(List> head) { writeSheet.setHead(head); return this; } /** * You can only choose one of the {@link ExcelWriterSheetBuilder#head(List)} and * {@link ExcelWriterSheetBuilder#head(Class)} * * @param clazz * @return */ public ExcelWriterSheetBuilder head(Class clazz) { writeSheet.setClazz(clazz); return this; } /** * Need Head */ public ExcelWriterSheetBuilder needHead(Boolean needHead) { writeSheet.setNeedHead(needHead); return this; } /** * Use the default style.Default is true. * * @param useDefaultStyle * @return */ public ExcelWriterSheetBuilder useDefaultStyle(Boolean useDefaultStyle) { writeSheet.setUseDefaultStyle(useDefaultStyle); return this; } /** * Whether to automatically merge headers.Default is true. * * @param automaticMergeHead * @return */ public ExcelWriterSheetBuilder automaticMergeHead(Boolean automaticMergeHead) { writeSheet.setAutomaticMergeHead(automaticMergeHead); return this; } /** * Custom type conversions override the default. * * @param converter * @return */ public ExcelWriterSheetBuilder registerConverter(Converter converter) { if (writeSheet.getCustomConverterList() == null) { writeSheet.setCustomConverterList(new ArrayList()); } writeSheet.getCustomConverterList().add(converter); return this; } /** * Custom write handler * * @param writeHandler * @return */ public ExcelWriterSheetBuilder registerWriteHandler(WriteHandler writeHandler) { if (writeSheet.getCustomWriteHandlerList() == null) { writeSheet.setCustomWriteHandlerList(new ArrayList()); } writeSheet.getCustomWriteHandlerList().add(writeHandler); return this; } /** * Starting from 0 * * @param sheetNo * @return */ public ExcelWriterSheetBuilder sheetNo(Integer sheetNo) { writeSheet.setSheetNo(sheetNo); return this; } /** * sheet name * * @param sheetName * @return */ public ExcelWriterSheetBuilder sheetName(String sheetName) { writeSheet.setSheetName(sheetName); return this; } /** * Ignore the custom columns. */ public ExcelWriterSheetBuilder excludeColumnIndexes(Collection excludeColumnIndexes) { writeSheet.setExcludeColumnIndexes(excludeColumnIndexes); return this; } /** * Ignore the custom columns. */ public ExcelWriterSheetBuilder excludeColumnFiledNames(Collection excludeColumnFiledNames) { writeSheet.setExcludeColumnFiledNames(excludeColumnFiledNames); return this; } /** * Only output the custom columns. */ public ExcelWriterSheetBuilder includeColumnIndexes(Collection includeColumnIndexes) { writeSheet.setIncludeColumnIndexes(includeColumnIndexes); return this; } /** * Only output the custom columns. */ public ExcelWriterSheetBuilder includeColumnFiledNames(Collection includeColumnFiledNames) { writeSheet.setIncludeColumnFiledNames(includeColumnFiledNames); return this; } public WriteSheet build() { return writeSheet; } public void doWrite(List data) { if (excelWriter == null) { throw new ExcelGenerateException("Must use 'EasyExcelFactory.write().sheet()' to call this method"); } excelWriter.write(data, build()); excelWriter.finish(); } public void doFill(Object data) { doFill(data, null); } public void doFill(Object data, FillConfig fillConfig) { if (excelWriter == null) { throw new ExcelGenerateException("Must use 'EasyExcelFactory.write().sheet()' to call this method"); } excelWriter.fill(data, fillConfig, build()); excelWriter.finish(); } public ExcelWriterTableBuilder table() { return table(null); } public ExcelWriterTableBuilder table(Integer tableNo) { ExcelWriterTableBuilder excelWriterTableBuilder = new ExcelWriterTableBuilder(excelWriter, build()); if (tableNo != null) { excelWriterTableBuilder.tableNo(tableNo); } return excelWriterTableBuilder; } }