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.

192 lines
3.7 KiB

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<CsvCell> 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<Cell> cellIterator() {
return (Iterator<Cell>)(Iterator<? extends Cell>)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<Cell> iterator() {
return cellIterator();
}
}