All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.excel.write.metadata.holder.WriteSheetHolder Maven / Gradle / Ivy

There is a newer version: 4.0.3
Show newest version
package com.alibaba.excel.write.metadata.holder;

import java.util.HashMap;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFSheet;

import com.alibaba.excel.enums.HolderEnum;
import com.alibaba.excel.enums.WriteLastRowTypeEnum;
import com.alibaba.excel.util.StringUtils;
import com.alibaba.excel.write.metadata.WriteSheet;

/**
 * sheet holder
 *
 * @author Jiaju Zhuang
 */
public class WriteSheetHolder extends AbstractWriteHolder {
    /**
     * current param
     */
    private WriteSheet writeSheet;
    /***
     * Current poi Sheet.This is only for writing, and there may be no data in version 07 when template data needs to be
     * read.
     * 
    *
  • 03:{@link HSSFSheet}
  • *
  • 07:{@link SXSSFSheet}
  • *
*/ private Sheet sheet; /*** * Current poi Sheet.Be sure to use and this method when reading template data. *
    *
  • 03:{@link HSSFSheet}
  • *
  • 07:{@link XSSFSheet}
  • *
*/ private Sheet cachedSheet; /*** * sheetNo */ private Integer sheetNo; /*** * sheetName */ private String sheetName; /*** * poi sheet */ private WriteWorkbookHolder parentWriteWorkbookHolder; /*** * has been initialized table */ private Map hasBeenInitializedTable; /** * last column type * * @param writeSheet * @param writeWorkbookHolder */ private WriteLastRowTypeEnum writeLastRowTypeEnum; public WriteSheetHolder(WriteSheet writeSheet, WriteWorkbookHolder writeWorkbookHolder) { super(writeSheet, writeWorkbookHolder, writeWorkbookHolder.getWriteWorkbook().getConvertAllFiled()); this.writeSheet = writeSheet; if (writeSheet.getSheetNo() == null && StringUtils.isEmpty(writeSheet.getSheetName())) { this.sheetNo = 0; } else { this.sheetNo = writeSheet.getSheetNo(); } this.sheetName = writeSheet.getSheetName(); this.parentWriteWorkbookHolder = writeWorkbookHolder; this.hasBeenInitializedTable = new HashMap(); if (writeWorkbookHolder.getTempTemplateInputStream() != null) { writeLastRowTypeEnum = WriteLastRowTypeEnum.TEMPLATE_EMPTY; } else { writeLastRowTypeEnum = WriteLastRowTypeEnum.COMMON_EMPTY; } } public WriteSheet getWriteSheet() { return writeSheet; } public void setWriteSheet(WriteSheet writeSheet) { this.writeSheet = writeSheet; } public Sheet getSheet() { return sheet; } public void setSheet(Sheet sheet) { this.sheet = sheet; } public Integer getSheetNo() { return sheetNo; } public Sheet getCachedSheet() { return cachedSheet; } public void setCachedSheet(Sheet cachedSheet) { this.cachedSheet = cachedSheet; } public void setSheetNo(Integer sheetNo) { this.sheetNo = sheetNo; } public String getSheetName() { return sheetName; } public void setSheetName(String sheetName) { this.sheetName = sheetName; } public WriteWorkbookHolder getParentWriteWorkbookHolder() { return parentWriteWorkbookHolder; } public void setParentWriteWorkbookHolder(WriteWorkbookHolder parentWriteWorkbookHolder) { this.parentWriteWorkbookHolder = parentWriteWorkbookHolder; } public Map getHasBeenInitializedTable() { return hasBeenInitializedTable; } public void setHasBeenInitializedTable(Map hasBeenInitializedTable) { this.hasBeenInitializedTable = hasBeenInitializedTable; } public WriteLastRowTypeEnum getWriteLastRowTypeEnum() { return writeLastRowTypeEnum; } public void setWriteLastRowTypeEnum(WriteLastRowTypeEnum writeLastRowTypeEnum) { this.writeLastRowTypeEnum = writeLastRowTypeEnum; } /** * Get the last line of index,you have to make sure that the data is written next * * @return */ public int getNewRowIndexAndStartDoWrite() { // 'getLastRowNum' doesn't matter if it has one or zero,is's zero int newRowIndex = 0; switch (writeLastRowTypeEnum) { case TEMPLATE_EMPTY: newRowIndex = Math.max(sheet.getLastRowNum(), cachedSheet.getLastRowNum()); if (newRowIndex != 0 || cachedSheet.getRow(0) != null) { newRowIndex++; } break; case HAS_DATA: newRowIndex = Math.max(sheet.getLastRowNum(), cachedSheet.getLastRowNum()); newRowIndex++; break; default: break; } writeLastRowTypeEnum = WriteLastRowTypeEnum.HAS_DATA; return newRowIndex; } @Override public HolderEnum holderType() { return HolderEnum.SHEET; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy