This method is written to be used in a derived class of FpSpread. Although I haven't tried it, I suspect the method could also be used in a class that references an FpSpread (changing "this." to "this.fpSpread1.", etc.)
Note that if it is known that at least one row of data cells is visible on the Spread for the column, the spreadView.GetCellRectangle method can be called on a data cell in the column to get the left and right bounds for the column instead of using this approach.
public void GetColumnLeftRightBounds(int columnIndex, int viewportColumnIndex, out int leftBound, out int rightBound)
SpreadView spreadView = GetRootWorkbook();
int leftColumnIndexInViewport = spreadView.GetViewportLeftColumn(viewportColumnIndex);
int rightColumnIndexInViewport = spreadView.GetViewportRightColumn(viewportColumnIndex);
if (leftColumnIndexInViewport > columnIndex || rightColumnIndexInViewport < columnIndex)
throw new ArgumentOutOfRangeException("The specified column index, " + columnIndex
+ ", is not visible in the specified viewport column, " + viewportColumnIndex + ". "
+ "Columns in range are " + leftColumnIndexInViewport + " through " + rightColumnIndexInViewport + ".");
int currentColumnIndex = leftColumnIndexInViewport;
rightBound = spreadView.GetViewportX(viewportColumnIndex);
leftBound = rightBound;
rightBound = leftBound + (int)(this.Sheets.Columns[currentColumnIndex].Width * this.ZoomFactor);
} while (currentColumnIndex <= columnIndex);