public void traverse(CellHandler handler) {int firstRow = range.getFirstRow();int lastRow = range.getLastRow();int firstColumn = range.getFirstColumn();int lastColumn = range.getLastColumn();final int width = lastColumn - firstColumn + 1;SimpleCellWalkContext ctx = new SimpleCellWalkContext();Row currentRow = null;Cell currentCell = null;for (ctx.rowNumber = firstRow; ctx.rowNumber <= lastRow; ++ctx.rowNumber) {currentRow = sheet.getRow(ctx.rowNumber);if (currentRow == null) {continue;}for (ctx.colNumber = firstColumn; ctx.colNumber <= lastColumn; ++ctx.colNumber) {currentCell = currentRow.getCell(ctx.colNumber);if (currentCell == null) {continue;}if (isEmpty(currentCell) && !traverseEmptyCells) {continue;}long rowSize = ArithmeticUtils.mulAndCheck((long)ArithmeticUtils.subAndCheck(ctx.rowNumber, firstRow), (long)width);ctx.ordinalNumber = ArithmeticUtils.addAndCheck(rowSize, (ctx.colNumber - firstColumn + 1));handler.onCell(currentCell, ctx);}}}

public void traverse ( CellHandler handler ) { int firstRow = range . getFirstRow ( ) ; int lastRow = range . getLastRow ( ) ; int firstColumn = range . getFirstColumn ( ) ; int lastColumn = range . getLastColumn ( ) ; final int width = lastColumn - firstColumn + 1 ; SimpleCellWalkContext ctx = new SimpleCellWalkContext ( ) ; Row currentRow = null ; Cell currentCell = null ; for ( ctx . rowNumber = firstRow ; ctx . rowNumber <= lastRow ; ++ ctx . rowNumber ) { currentRow = sheet . getRow ( ctx . rowNumber ) ; if ( currentRow == null ) { continue ; } for ( ctx . colNumber = firstColumn ; ctx . colNumber <= lastColumn ; ++ ctx . colNumber ) { currentCell = currentRow . getCell ( ctx . colNumber ) ; if ( currentCell == null ) { continue ; } if ( isEmpty ( currentCell ) && ! traverseEmptyCells ) { continue ; } long rowSize = ArithmeticUtils . mulAndCheck ( ( long ) ArithmeticUtils . subAndCheck ( ctx . rowNumber , firstRow ) , ( long ) width ) ; ctx . ordinalNumber = ArithmeticUtils . addAndCheck ( rowSize , ( ctx . colNumber - firstColumn + 1 ) ) ; handler . onCell ( currentCell , ctx ) ; } } }
public void Traverse(ICellHandler handler){int firstRow = range.FirstRow;int lastRow = range.LastRow;int firstColumn = range.FirstColumn;int lastColumn = range.LastColumn;int width = lastColumn - firstColumn + 1;SimpleCellWalkContext ctx = new SimpleCellWalkContext();IRow currentRow = null;ICell currentCell = null;for (ctx.rowNumber = firstRow; ctx.rowNumber <= lastRow; ++ctx.rowNumber){currentRow = sheet.GetRow(ctx.rowNumber);if (currentRow == null){continue;}for (ctx.colNumber = firstColumn; ctx.colNumber <= lastColumn; ++ctx.colNumber){currentCell = currentRow.GetCell(ctx.colNumber);if (currentCell == null){continue;}if (IsEmpty(currentCell) && !traverseEmptyCells){continue;}ctx.ordinalNumber =(ctx.rowNumber - firstRow) * width +(ctx.colNumber - firstColumn + 1);handler.OnCell(currentCell, ctx);}}}
