Ranges in ReoGrid are defined by a starting position and an ending position, with the smallest possible range encompassing at least one cell. It's important to note that a range itself is not a merged cell, although it has the potential to be merged into a single cell. Additionally, it is possible for two ranges to intersect, as illustrated below:
In ReoGrid, ranges are represented through two primary objects:
- Range Position: This is depicted by the
RangePosition
structure, which was referred to asReoGridRange
in versions prior to 1.1.0. - Range Instance: This is represented by the
ReferenceRange
class, providing a more detailed and manipulable representation of a range within the worksheet.
These objects facilitate the management and manipulation of cell ranges, enabling complex operations and interactions within the spreadsheet.
Range Position
The RangePosition
structure in ReoGrid is designed to encapsulate the numerical information necessary to identify a specific range on a worksheet. It's important to note that RangePosition
is not tied to any particular worksheet and does not store any data or style information. A RangePosition
can be instantiated either from an address string or by specifying the starting position and size of the range, including:
- The row index of the starting position (zero-based).
- The column index of the starting position (zero-based).
- The total number of rows in the range.
- The total number of columns in the range.
Here are examples of how to create a RangePosition
:
// Creating a range position from an address string
var rangeFromString = new RangePosition("C5:H14");
// Creating a range position by specifying the start position, number of rows, and number of columns
var rangeFromIndices = new RangePosition(4, 2, 9, 5);
Properties and methods
Properties of RangePosition
are used to get information from a range position:
Property | Description |
---|---|
Row | Number of row of the start position |
Col | Number of column of the start position |
Rows | Number of rows contained in this range |
Cols | Number of columns contained in this range |
EndRow | Number of row of the end position |
EndCol | Number of column of the end position |
IsEmpty | Check whether or not this range is empty |
RangePosition
contains the following methods:
range.Contains(CellPosition) // check whether or not the range contains
a specified cell position
range.Equals(RangePosition) // compare to another range
range.Offset(int rows, int cols) // move range by n rows and n columns
Get a safe range position
Sometimes range might out of the valid range of spreadsheet, to always get a safe range by using the FixRange
method:
var fixedRange = sheet.FixRange(range); // get a fixed range
Range Instance
The range instance represents the range in a worksheet, always keeps the reference to a worksheet. When an associated worksheet is destroyed, all range instances belong to the worksheet will be invalid and should be destroyed.
Get a range instance
To get a range instance, use the Ranges
property of worksheet.
var range = worksheet.Ranges["B2:D3"];
Access range data
It is possible to set range data by using Data
property:
range.Data = new object[] { "Product", "Unit Price", "Quantity", "Extended Price" };
Access styles of range
To get or set styles from a range, use the Style
property:
range.Style.BackColor = System.Drawing.Color.LightBlue;
Access border of range
To get or set borders from a range, use the Border property:
range.Border.Outside = RangeBorderStyle.BlackSolid;
Named range
Named range is a special range instance inherited from normal range instance, learn more about Named Range.
Convert between range position and range instance
Convert a range position to range instance:
var rangeInstance = sheet.Ranges[rangePosition];
Convert a range instance to range position:
var rangePos = rangeInstance.Position;
Range instance can convert into range position implicitly:
RangePosition rangePos = rangeInstance;
For example, the following all sentences are valid.
sheet.SelectionRange = rangePosition;
sheet.SelectionRange = rangeInstance;
Used Range
To get range that contains data in a worksheet, use UsedRange
peroperty.
var range = sheet.UsedRange;
Merge range
About merging range refer to Merge and Unmerge.