package com.alibaba.excel.metadata.csv; import java.util.Iterator; import java.util.List; import lombok.Data; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.compress.utils.Lists; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; /** * csv row * * @author Jiaju Zhuang */ @Data public class CsvRow implements Row { /** * cell list */ private final List cellList; /** * workbook */ private final CsvWorkbook csvWorkbook; /** * sheet */ private final CsvSheet csvSheet; /** * row index */ private Integer rowIndex; /** * style */ private CellStyle cellStyle; public CsvRow(CsvWorkbook csvWorkbook, CsvSheet csvSheet, Integer rowIndex) { cellList = Lists.newArrayList(); this.csvWorkbook = csvWorkbook; this.csvSheet = csvSheet; this.rowIndex = rowIndex; } @Override public Cell createCell(int column) { CsvCell cell = new CsvCell(csvWorkbook, csvSheet, this, column, null); cellList.add(cell); return cell; } @Override public Cell createCell(int column, CellType type) { CsvCell cell = new CsvCell(csvWorkbook, csvSheet, this, column, type); cellList.add(cell); return cell; } @Override public void removeCell(Cell cell) { cellList.remove(cell); } @Override public void setRowNum(int rowNum) { this.rowIndex = rowNum; } @Override public int getRowNum() { return rowIndex; } @Override public Cell getCell(int cellnum) { if (cellnum >= cellList.size()) { return null; } return cellList.get(cellnum - 1); } @Override public Cell getCell(int cellnum, MissingCellPolicy policy) { return getCell(cellnum); } @Override public short getFirstCellNum() { if (CollectionUtils.isEmpty(cellList)) { return -1; } return 0; } @Override public short getLastCellNum() { if (CollectionUtils.isEmpty(cellList)) { return -1; } return (short)cellList.size(); } @Override public int getPhysicalNumberOfCells() { return getRowNum(); } @Override public void setHeight(short height) { } @Override public void setZeroHeight(boolean zHeight) { } @Override public boolean getZeroHeight() { return false; } @Override public void setHeightInPoints(float height) { } @Override public short getHeight() { return 0; } @Override public float getHeightInPoints() { return 0; } @Override public boolean isFormatted() { return false; } @Override public CellStyle getRowStyle() { return cellStyle; } @Override public void setRowStyle(CellStyle style) { this.cellStyle = style; } @Override public Iterator cellIterator() { return (Iterator)(Iterator)cellList.iterator(); } @Override public Sheet getSheet() { return csvSheet; } @Override public int getOutlineLevel() { return 0; } @Override public void shiftCellsRight(int firstShiftColumnIndex, int lastShiftColumnIndex, int step) { } @Override public void shiftCellsLeft(int firstShiftColumnIndex, int lastShiftColumnIndex, int step) { } @Override public Iterator iterator() { return cellIterator(); } }