shifttransformation.java
来自「一个java生成自动生成Excel」· Java 代码 · 共 87 行
JAVA
87 行
package net.sf.jxls.transformation;
import java.util.ArrayList;
import java.util.List;
import net.sf.jxls.formula.CellRef;
import net.sf.jxls.tag.Block;
import net.sf.jxls.tag.Point;
import org.apache.poi.hssf.util.CellReference;
/**
* Defines simple shift transformation
* @author Leonid Vysochyn
*/
public class ShiftTransformation extends BlockTransformation {
int rowShift, colShift;
int rowNum;
int colNum;
private CellReference cellReference;
private List cells = new ArrayList();
private List points = new ArrayList();
public ShiftTransformation(Block block, int rowShift, int colShift) {
super(block);
this.rowShift = rowShift;
this.colShift = colShift;
}
public Block getBlockAfterTransformation() {
return null;
}
public List transformCell(Point p) {
points.clear();
if( block.contains( p ) || (block.isAbove( p ) && rowShift != 0) || (block.isToLeft( p ) && colShift != 0)){
Point newPoint = p.shift( rowShift, colShift );
points.add( newPoint );
}else{
points.add( p );
}
return points;
}
public List transformCell(String sheetName, CellRef cellRef) {
cells.clear();
String refSheetName = cellRef.getSheetName();
if( block.getSheet().getSheetName().equalsIgnoreCase( refSheetName ) || (cellRef.getSheetName() == null && block.getSheet().getSheetName().equalsIgnoreCase( sheetName ))){
if( block.contains( cellRef.getRowNum(), cellRef.getColNum() ) || (block.getEndRowNum() < cellRef.getRowNum() && rowShift != 0)
|| (block.getEndCellNum() < cellRef.getColNum() && colShift != 0)){
rowNum = cellRef.getRowNum() + rowShift;
colNum = cellRef.getColNum() + colShift;
// todo: remove this check
if( colNum < 0 ){
colNum = 0;
}
cellReference = new CellReference( rowNum, colNum );
if( cellRef.getSheetName() != null ){
cells.add( cellRef.getSheetName() + "!" + cellReference.toString());
}else{
cells.add( cellReference.toString() );
}
}
}
return cells;
}
public boolean equals(Object obj) {
if( obj != null && obj instanceof ShiftTransformation ){
ShiftTransformation st = (ShiftTransformation) obj;
return ( super.equals( obj ) && rowShift == st.rowShift && colShift == st.colShift);
}
return false;
}
public int hashCode() {
int result = super.hashCode();
result = 29 * result + rowShift;
result = 29 * result + colShift;
return result;
}
public String toString() {
return "ShiftTransformation: {" + super.toString() + ", shift=(" + rowShift + ", " + colShift + ")}";
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?