public void AddTextbox(Textbox reportItem, string value, Row row) { if (reportItem.InPageHeaderOrFooter()) { return; } if (reportItem.IsTableOrMatrixCell(Report) || reportItem.Top == null || reportItem.Left == null || reportItem.Height == null || reportItem.Width == null) { return; } float topPosition = reportItem.Top.Points; float leftPosition = reportItem.Left.Points; float height = reportItem.CanGrow ? reportItem.RunTextCalcHeight(Report, g, row) : reportItem.Height.Points; float width = reportItem.Width.Points; FillAbsolutePosition(reportItem, ref topPosition, ref leftPosition); float OriginalBottomPosition = topPosition + reportItem.Height.Points; float bottomPosition = topPosition + height; float rightPosition = leftPosition + width; topPosition = GetCellAboveRelativePosition(topPosition); var currentRow = AddRow(topPosition, height); var currentColumn = AddColumn(leftPosition, width); ExcelCell currentCell = new ExcelCell(reportItem, value, currentRow, currentColumn); currentCell.OriginalBottomPosition = OriginalBottomPosition; SetCellStyle(currentCell, reportItem, row); Cells.Add(currentCell); currentCell.OriginalHeight = height; currentCell.GrowedBottomPosition = topPosition + height; }