Range Objects
Working with the ooodev.utils.data_type.range_obj.RangeObj
class.
Rules
Can add and subtract
int
Can add and subtract
str
wherestr
is treated as column nameCan add and subtract
RowObj
Can add and subtract
ColObj
Can add and subtract
CellObj
Adding or subtracting results in a new
RangeObj
Adding/subtracting a number to a
RangeObj
is treated differently then adding/subtracting aRangeObj
to a number.Adding/subtracting a string (column) to a
RangeObj
is treated differently then adding/subtracting aRangeObj
to a string.Adding/subtracting
RowObj
,ColObj
, orCellObj
toRangeObj
is treated differently then adding/subtractingRangeObj
toRowObj
,ColObj
, orCellObj
.RangeObj
can be combined using the/
operator.
Addition
Example
Adding Rows using integers
Adding positive number to RangeObj
results in rows being append to end or range.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="C", row_start=1, row_end=3, sheet_idx=0)
>>> str(rng1)
'A1:C3'
>>> rng1.row_count
3
>>> rng2 = rng1 + 5
>>> str(rng2)
'A1:C8'
>>> repr(rng2)
"RangeObj(col_start='A', col_end='C', row_start=1, row_end=8, sheet_idx=0)"
>>> rng2.row_count
8
Start Range A1:C3
![Start Range A1:C3](https://user-images.githubusercontent.com/4193389/213174796-1fc4e447-116b-458f-95c6-94971ea331b8.png)
Result A1:C8
![Result A1:C8](https://user-images.githubusercontent.com/4193389/213175212-9065fd3c-3c84-46c3-aa7f-edb00c7007df.png)
Adding RangeObj
to a positive number result is new rows being added at the start of the range.
Starting with A10:C15
we end up with A5:C15
.
Note that in this example the number comes before rng1
.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="C", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'A10:C15'
>>> rng1.row_count
6
>>> rng2 = 5 + rng1
>>> str(rng2)
'A5:C15'
>>> repr(rng2)
"RangeObj(col_start='A', col_end='C', row_start=5, row_end=15, sheet_idx=0)"
>>> rng2.row_count
11
Start Range A10:C15
![Start Range A10:C15](https://user-images.githubusercontent.com/4193389/213176936-a584dda5-48be-428c-9d5a-83677cb85584.png)
Result A5:C15
![Result A5:C15](https://user-images.githubusercontent.com/4193389/213177289-f249bab6-9f52-4a12-8dfa-27adbdff08f6.png)
Adding a negative number.
Adding a negative number to RangeObj
results in rows being removed from the end of the range.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="C", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'A10:C15'
>>> rng1.row_count
6
>>> rng2 = rng1 + -5
>>> str(rng2)
'A10:C10'
>>> repr(rng2)
"RangeObj(col_start='A', col_end='C', row_start=10, row_end=10, sheet_idx=0)"
>>> rng2.row_count
1
Start Range A10:C15
![Start Range A10:C15](https://user-images.githubusercontent.com/4193389/213176936-a584dda5-48be-428c-9d5a-83677cb85584.png)
Result A10:C10
![Result A10:C10](https://user-images.githubusercontent.com/4193389/213177732-96aef023-fa29-4e5b-a5e9-7676ee938a39.png)
Adding a RangeObj
to a negative number results in rows being added to the end of the range.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="C", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'A10:C15'
>>> rng1.row_count
6
>>> rng2 = -5 - rng1
>>> str(rng2)
'A5:C15'
>>> repr(rng2)
"RangeObj(col_start='A', col_end='C', row_start=5, row_end=15, sheet_idx=0)"
>>> rng2.row_count
11
Start Range A10:C15
![Start Range A10:C15](https://user-images.githubusercontent.com/4193389/213176936-a584dda5-48be-428c-9d5a-83677cb85584.png)
Result A5:C15
![Result A5:C15](https://user-images.githubusercontent.com/4193389/213177289-f249bab6-9f52-4a12-8dfa-27adbdff08f6.png)
Adding Rows using RowObj
RowObj
instances can also be used to add rows to a RangeObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.row_obj import RowObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.row_count
6
>>> rng2 = rng1 + RowObj.from_int(2)
>>> str(rng2)
'F10:H17'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='H', row_start=10, row_end=17, sheet_idx=0)"
>>> rng2.row_count
8
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F10:H17
![Result F10:H17](https://user-images.githubusercontent.com/4193389/213185159-80af94ed-da18-41dc-b097-efca3d4bf0b2.png)
Adding RangeObj instance to RowObj instance
RangeObj
instances can also be used to add rows to a RowObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.row_obj import RowObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.row_count
6
>>> rng2 = RowObj.from_int(2) + rng1
>>> str(rng2)
'F8:H15'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='H', row_start=8, row_end=15, sheet_idx=0)"
>>> rng2.row_count
8
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F8:H15
![Result F8:H15](https://user-images.githubusercontent.com/4193389/213184844-081d21d7-24d6-406c-bfdd-05fe380c8090.png)
Adding Columns using col string
Adding columns is accomplished by adding a column letter such as C
to add three columns.
Adding column to RangeObj
results in columns being added to the right of the range.
Add 3 columns to the right of RangeObj
.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.col_count
3
>>> rng2 = rng1 + "C"
>>> str(rng2)
'F10:K15'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='K', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.col_count
6
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F10:K15
![Result F10:K15](https://user-images.githubusercontent.com/4193389/213186367-211f861b-31b1-45be-8e86-5e973ebbd91c.png)
Adding column to RangeObj
results in columns being added to the right of the range.
Add 3 columns to the left of RangeObj
.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.col_count
3
>>> rng2 = "C" + rng1
>>> str(rng2)
'C10:H15'
>>> repr(rng2)
"RangeObj(col_start='C', col_end='H', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.col_count
6
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result C10:H15
![Result C10:H15](https://user-images.githubusercontent.com/4193389/213182305-fcc0cbd6-8c3b-42e0-adf5-52f85e112dfa.png)
Adding Columns using ColObj
ColObj
instances can also be used to add rows to a RangeObj
instance.
Adding ColObj
instance to RangeObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.col_obj import ColObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.col_count
3
>>> rng2 = rng1 + ColObj.from_int(2)
>>> str(rng2)
'F10:J15'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='J', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.col_count
5
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F10:J15
![Result F10:J15](https://user-images.githubusercontent.com/4193389/213183668-e007fcb0-5f86-4be2-82e3-376ab7c79097.png)
Adding RangeObj instance to ColObj instance
RangeObj
instances can also be used to add rows to a ColObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.col_obj import ColObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.col_count
3
>>> rng2 = rng1 + ColObj.from_int(2)
>>> str(rng2)
'F10:J15'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='J', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.col_count
5
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F10:J15
![Result F10:J15](https://user-images.githubusercontent.com/4193389/213183668-e007fcb0-5f86-4be2-82e3-376ab7c79097.png)
Adding Columns and rows using CellObj
Add CellObj instance to RowObj instance
CellObj
instances can also be used to add rows to a RowObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.cell_obj import CellObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.row_count
6
>>> rng1.col_count
3
>>> rng2 = rng1 + CellObj.from_idx(1, 1)
>>> str(rng2)
'F10:J17'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='J', row_start=10, row_end=17, sheet_idx=0)"
>>> rng2.row_count
8
>>> rng2.col_count
5
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F10:J17
![Result F10:J17](https://user-images.githubusercontent.com/4193389/213184226-7beb6e1a-fb7c-4317-9991-06660b01782d.png)
Add RowObj instance to CellObj instance
RowObj
instances can also be used to add rows to a CellObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.cell_obj import CellObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.row_count
6
>>> rng1.col_count
3
>>> rng2 = CellObj.from_idx(1, 1) + rng1
>>> str(rng2)
'D8:H15'
>>> repr(rng2)
"RangeObj(col_start='D', col_end='H', row_start=8, row_end=15, sheet_idx=0)"
>>> rng2.row_count
8
>>> rng2.col_count
5
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result D8:H15
![Result D8:H15](https://user-images.githubusercontent.com/4193389/213184613-1bc906f9-e82c-44ba-86f0-b3e635762fb6.png)
Subtraction
Example
Subtracting Rows using integer
Subtracting positive number from RangeObj
results in rows being removed from end of range.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="C", row_start=10, row_end=20, sheet_idx=0)
>>> str(rng1)
'A10:C20'
>>> rng1.row_count
11
>>> rng2 = rng1 - 5
>>> str(rng2)
'A10:C15'
>>> repr(rng2)
"RangeObj(col_start='A', col_end='C', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.row_count
6
Start Range A10:C20
![Start Range A10:C20](https://user-images.githubusercontent.com/4193389/213186678-78627305-cfe3-4925-b05c-7d258c81447c.png)
Result A10:C15
![Result A10:C15](https://user-images.githubusercontent.com/4193389/213186921-05cafa40-0f7a-49cf-91e8-e960ba81f122.png)
Subtracting RangeObj
from a positive number results in rows being remove from start of range.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="C", row_start=10, row_end=20, sheet_idx=0)
>>> str(rng1)
'A10:C20'
>>> rng1.row_count
11
>>> rng2 = 5 - rng1
>>> str(rng2)
'A15:C20'
>>> repr(rng2)
"RangeObj(col_start='A', col_end='C', row_start=15, row_end=20, sheet_idx=0)"
>>> rng2.row_count
6
Start Range A10:C20
![Start Range A10:C20](https://user-images.githubusercontent.com/4193389/213186678-78627305-cfe3-4925-b05c-7d258c81447c.png)
Result A15:C20
![Result A15:C20](https://user-images.githubusercontent.com/4193389/213187281-3e4ece14-3bc8-491d-a1ae-2b676a080219.png)
Subtracting negative number from RangeObj
results in rows being added to end of range.
The same as adding a positive number.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="C", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'A10:C15'
>>> rng1.row_count
6
>>> rng2 = rng1 - -5
>>> str(rng2)
'A10:C20'
>>> repr(rng2)
"RangeObj(col_start='A', col_end='C', row_start=10, row_end=20, sheet_idx=0)"
>>> rng2.row_count
11
Start Range A10:C15
![Start Range A10:C15](https://user-images.githubusercontent.com/4193389/213186921-05cafa40-0f7a-49cf-91e8-e960ba81f122.png)
Result A10:C20
![Result A10:C20](https://user-images.githubusercontent.com/4193389/213186678-78627305-cfe3-4925-b05c-7d258c81447c.png)
Subtracting RangeObj
from negative number results in rows being subtracted from start of range.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="C", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'A10:C15'
>>> rng1.row_count
6
>>> rng2 = -3 - rng1
>>> str(rng2)
'A7:C15'
>>> repr(rng2)
"RangeObj(col_start='A', col_end='C', row_start=7, row_end=15, sheet_idx=0)"
>>> rng2.row_count
9
Start Range A10:C15
![Start Range A10:C15](https://user-images.githubusercontent.com/4193389/213186921-05cafa40-0f7a-49cf-91e8-e960ba81f122.png)
Result A7:C15
![Result A7:C15](https://user-images.githubusercontent.com/4193389/213187948-2873c43f-432c-43b7-8418-0e1f718f9356.png)
Subtracting Rows using RowObj
RowObj
instances can also be used to subtract rows from a RangeObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.row_obj import RowObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.row_count
6
>>> rng2 = rng1 - RowObj.from_int(2)
>>> str(rng2)
'F10:H13'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='H', row_start=10, row_end=13, sheet_idx=0)"
>>> rng2.row_count
4
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F10:H13
![Result F10:H13](https://user-images.githubusercontent.com/4193389/213188390-19250f8b-237e-452d-9f60-1289531cf805.png)
Subtracting RangeObj
instance from RowObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.row_obj import RowObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.row_count
6
>>> rng2 = RowObj.from_int(2) - rng1
>>> str(rng2)
'F12:H15'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='H', row_start=12, row_end=15, sheet_idx=0)"
>>> rng2.row_count
4
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F12:H15
![Result F12:H15](https://user-images.githubusercontent.com/4193389/213188838-394915fd-6e55-4c22-a76b-303b9a666d4d.png)
Subtracting Columns using column string
Subtract column string from RangeObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.col_count
3
>>> rng2 = rng1 - "B"
>>> str(rng2)
'F10:F15'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='F', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.col_count
1
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F10:F15
![Result F10:F15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Subtract RangeObj
instance from column string.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.col_count
3
>>> rng2 = "B" - rng1
>>> str(rng2)
'H10:H15'
>>> repr(rng2)
"RangeObj(col_start='H', col_end='H', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.col_count
1
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result H10:H15
![Result H10:H15](https://user-images.githubusercontent.com/4193389/213189756-f97a388a-dac6-46b1-8021-f75c161f0523.png)
Subtracting Columns using ColObj
Subtract ColObj
instance from RangeObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.col_obj import ColObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.col_count
3
>>> rng2 = rng1 - ColObj.from_int(2)
>>> str(rng2)
'F10:F15'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='F', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.col_count
1
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result F10:F15
![Result F10:F15](https://user-images.githubusercontent.com/4193389/213190272-88ac2548-8454-4cf4-b964-4e14083d2012.png)
Subtracting RangeObj
instance from ColObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.col_obj import ColObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.col_count
3
>>> rng2 = ColObj.from_int(2) - rng1
>>> str(rng2)
'H10:H15'
>>> repr(rng2)
"RangeObj(col_start='H', col_end='H', row_start=10, row_end=15, sheet_idx=0)"
>>> rng2.col_count
1
Start Range F10:H15
![Start Range F10:H15](https://user-images.githubusercontent.com/4193389/213182893-42576a34-1cab-468f-b258-575a41c7974e.png)
Result H10:H15
![Result H10:H15](https://user-images.githubusercontent.com/4193389/213189756-f97a388a-dac6-46b1-8021-f75c161f0523.png)
Subtracting Columns using CellObj
Subtracting CellObj
instance from RangeObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.cell_obj import CellObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.row_count
6
>>> rng1.col_count
3
>>> rng2 = rng1 - CellObj.from_idx(1, 1)
>>> str(rng2)
'F10:F13'
>>> repr(rng2)
"RangeObj(col_start='F', col_end='F', row_start=10, row_end=13, sheet_idx=0)"
>>> rng2.row_count
4
>>> rng2.col_count
1
Start Range H10:H15
![Start Range H10:H15](https://user-images.githubusercontent.com/4193389/213189756-f97a388a-dac6-46b1-8021-f75c161f0523.png)
Result F10:F13
![Result F10:F13](https://user-images.githubusercontent.com/4193389/213190980-c307a840-4cde-435a-8b8b-f66ab9efd418.png)
Subtracting RangeObj
instance from CellObj
instance.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>> from ooodev.utils.data_type.cell_obj import CellObj
>>>
>>> rng1 = RangeObj(col_start="F", col_end="H", row_start=10, row_end=15, sheet_idx=0)
>>> str(rng1)
'F10:H15'
>>> rng1.row_count
6
>>> rng1.col_count
3
>>> rng2 = CellObj.from_idx(1, 1) - rng1
>>> str(rng2)
'H12:H15'
>>> repr(rng2)
"RangeObj(col_start='H', col_end='H', row_start=12, row_end=15, sheet_idx=0)"
>>> rng2.row_count
4
>>> rng2.col_count
1
Start Range H10:H15
![Start Range H10:H15](https://user-images.githubusercontent.com/4193389/213189756-f97a388a-dac6-46b1-8021-f75c161f0523.png)
Result H12:H15
![Result H12:H15](https://user-images.githubusercontent.com/4193389/213191322-c8ff9854-fd7f-4450-96a4-df0205376799.png)
Combining
Combine (merging) of RangeObj
is done using the /
operator (similar to Path
).
Example
Combing two RowObj’s
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="C", col_end="F", row_start=3, row_end=6, sheet_idx=0)
>>> str(rng1)
'C3:F6'
>>> rng2 = RangeObj(col_start="C", col_end="F", row_start=1, row_end=2, sheet_idx=0)
>>> str(rng2)
'C1:F2'
>>> rng3 = rng1 / rng2
>>> str(rng3)
'C1:F6'
First Range C3:F6
![First Range C3:F6](https://user-images.githubusercontent.com/4193389/213155290-72f9f679-b1f6-4295-b66a-bf37f8e7009f.png)
Second Range C1:F2
![Second Range C1:F2](https://user-images.githubusercontent.com/4193389/213154603-28a7e490-a455-4c09-bffa-d8ed373073f8.png)
Combined: C1:F6
![Combined C1:F6](https://user-images.githubusercontent.com/4193389/213154884-dbb653f7-e7c4-4a85-a6e3-f25970ea8407.png)
Combining Separate Ranges
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="B", row_start=2, row_end=4, sheet_idx=0)
>>> str(rng1)
'A2:B4'
>>> rng2 = RangeObj(col_start="C", col_end="F", row_start=6, row_end=8, sheet_idx=0)
>>> str(rng2)
'C6:F8'
>>> rng3 = rng1 / rng2
>>> str(rng3)
'A2:F8'
First Range A2:B4
![First Range A2:B4](https://user-images.githubusercontent.com/4193389/213160729-d1739d5d-549a-4c43-a620-bd363377a103.png)
Second Range C6:F8
![Second Range C6:F8](https://user-images.githubusercontent.com/4193389/213161053-f1217c41-6ee7-47d2-b825-36f8d1dd151d.png)
Combined: A2:F8
![Combined A2:F8](https://user-images.githubusercontent.com/4193389/213161509-741834b9-8094-452e-b57f-2bf8cc68e5a7.png)
Combining Ranges With String Range
RangeObj
can be combined with String ranges and vice versa.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="B", row_start=2, row_end=4, sheet_idx=0)
>>> str(rng1)
'A2:B4'
>>> rng2 = rng1 / 'C6:F8'
>>> str(rng2)
'A2:F8'
rng2 = 'C6:F8' / rng1
is also valid.
First Range A2:B4
![First Range A2:B4](https://user-images.githubusercontent.com/4193389/213160729-d1739d5d-549a-4c43-a620-bd363377a103.png)
Second Range C6:F8
![Second Range C6:F8](https://user-images.githubusercontent.com/4193389/213161053-f1217c41-6ee7-47d2-b825-36f8d1dd151d.png)
Combined: A2:F8
![Combined A2:F8](https://user-images.githubusercontent.com/4193389/213161509-741834b9-8094-452e-b57f-2bf8cc68e5a7.png)
Combining multiple ranges
Multiple ranges can be combined.
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng1 = RangeObj(col_start="A", col_end="B", row_start=2, row_end=4, sheet_idx=0)
>>> rng2 = RangeObj(col_start="C", col_end="F", row_start=6, row_end=8, sheet_idx=0)
>>> rng3 = RangeObj(col_start="J", col_end="L", row_start=7, row_end=14, sheet_idx=0)
>>> rng4 = rng1 / rng2 / rng3 / "K12:O22"
>>> str(rng4)
'A2:O22'
Checking if value in Range
To check if a cell is in a range, use the in
operator.
The in
operator checks if a cell is in a range and can check the same values as the
contains()
method.
Acceptable values are:
CellObj
CellAddress
CellValues
str
in the format"A1"
Example:
>>> from ooodev.utils.data_type.range_obj import RangeObj
>>>
>>> rng = RangeObj.from_range("AA2:AB7")
>>> print("AA3" in rng)
True
Iterating over Range
To iterate over a range, use the for
loop.
The iteration is done in a column-major order, meaning that the cells are iterated over by column, then by row.
# each cell is an instance of CellObj
>>> rng = RangeObj.from_range("A1:C4")
>>> for cell in rng:
>>> print(cell)
A1
B1
C1
A2
B2
C2
A3
B3
C3
A4
B4
C4