The AutoSize feature of Spread COM removes the blank area around the grid cells such that Spread always takes the size of Rows and Column count. Unfortunately, this feature is not available  as a built-in feature with Spread for WinForms.

In this blog, we will discuss the an easy and simple implementation of AutoSize feature, ie,  remove the blank area as shown in the image :

SpreadGrayArea

The Implementation


All we need to do is to calculate and sum the height and width of each element in SpreadSheet and set it to SpreadSheet's height and width. It involves following steps :

  1. Calculate Height of all Rows, ColumnHeader and Horizontal Scrollbar

  2. Calculate Width of all Columns, RowHeader and Vertical Scrollbar

  3. Set Spreadsheet's Height and Width to the above calculated Height & Width


Step 1 : Calculate Height


Height of all the Rows


foreach (FarPoint.Win.Spread.Row r in fpSpread1.Sheets[0].Rows)
{
h = h +(int)r.Height; //h is a global variable
}


Height of ColumnHeader


foreach (FarPoint.Win.Spread.Row r in fpSpread1.Sheets[0].ColumnHeader.Rows)
{
h = h +(int) r.Height;
}


Height of Horizontal Scrollbar


hs = SystemInformation.HorizontalScrollBarHeight;


It gives you the total height that Spread needs to show all these elements but no blank area.


totalHeight=h+hs;

Step 2 : Calculate Width


Width of all Columns


foreach (FarPoint.Win.Spread.Column c in fpSpread1.Sheets[0].Columns)
{
w =w +(int) c.Width; //w is the global variable
}


Width of RowHeader


foreach (FarPoint.Win.Spread.Column c in fpSpread1.Sheets[0].RowHeader.Columns)
{
w = w + (int)c.Width;
}


Width of Vertical ScrollBar


vs = SystemInformation.VerticalScrollBarWidth;

Step 3 : Set the Size of SpreadSheet


Sum up the width for all elements to get the final width which Spread requires to show all these elements and hide the blank area.


totalWidth=w+vs;


Now all we need to do is to set the final height and width to Spread's height and width.


fpSpread1.Width = totalWidth;
fpSpread1.Height =totalHeight;


Final output of this is similar to the one shown in image below:
AutoSizedSpread

Above image shows that Spread does not contain any GrayArea for same number of Rows and Columns now. Download the sample application which demonstrate the above implementation more precisely.

Download C# Sample
Download VB.Net Sample