Calc Direct Cell Borders (Static)
Overview
Calc has a dialog, as seen in Fig. 373, that sets cell borders. In this section we will look the various classes that set the same options.
The ooodev.format.calc.direct.cell.borders.Borders
class is used to set the border values.
See also
Setup
General function used to run these examples:
from ooodev.format import Styler
from ooodev.format.calc.direct.cell.borders import Borders, Shadow, Side, BorderLineKind, Padding
from ooodev.office.calc import Calc
from ooodev.utils.color import CommonColor
from ooodev.gui.gui import GUI
from ooodev.loader.lo import Lo
def main() -> int:
with Lo.Loader(Lo.ConnectSocket()):
doc = Calc.create_doc()
sheet = Calc.get_sheet()
GUI.set_visible(True, doc)
Lo.delay(300)
Calc.zoom_value(doc, 130)
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(border_side=Side(color=CommonColor.BLUE))
Styler.apply(cr, borders)
Lo.delay(1_000)
Lo.close_doc(doc)
return 0
if __name__ == "__main__":
SystemExit(main())
Examples
Single Cell
Default Border
Applying Border.default
will create a default border for a cell or a range.
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
Styler.apply(cell, Borders().default)
Removing Border
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
Styler.apply(cell, Borders().default)
# ...
# remove border
Styler.apply(cell, Borders().empty)
Colored border
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
borders = Borders(border_side=Side(color=CommonColor.RED))
Styler.apply(cell, borders)
Applying border to a side
Apply green border to left side.
Borders
constructor can also take left
, right
, top
, bottom
, vertical
, horizontal
, diagonal_down
and diagonal_up
arguments as sides.
In this case just pass in the left
side.
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
Styler.apply(cell, Borders(left=Side(color=CommonColor.GREEN)))
Apply border with increased size
Passing width
argument to Side()
controls border width.
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
side_left_right = Side(color=CommonColor.GREEN, width=1.8)
borders = Borders(left=side_left_right, right=side_left_right)
Styler.apply(cell, borders)
Apply different top and side colors
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
side_top_bottom = Side(color=CommonColor.CHARTREUSE, width=1.3)
side_left_right = Side(color=CommonColor.ROYAL_BLUE, width=1.3)
borders = Borders(
top=side_top_bottom,
bottom=side_top_bottom,
left=side_left_right,
right=side_left_right,
)
Styler.apply(cell, borders)
Apply Diagonal border
Passing diagonal_up
and diagonal_down
arguments to Borders
allows for diagonal lines.
UP
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
borders = Borders(diagonal_up=Side(color=CommonColor.RED))
Styler.apply(cell, borders)
DOWN
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
borders = Borders(diagonal_down=Side(color=CommonColor.RED))
Styler.apply(cell, borders)
Applying different style border
Using BorderLineKind
enumeration it is possible to change the border style to many different configurations.
In this example the border style is set to Dash-dot.
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
borders = Borders(
border_side=Side(line=BorderLineKind.DASH_DOT, color=CommonColor.DARK_GREEN)
)
Styler.apply(cell, borders)
Apply Shadow to cell
Using the Shadow
class shadows with a variety of options can be added to a cell.
In this example the default shadow is used.
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
borders = Borders(border_side=Side(color=CommonColor.BLUE), shadow=Shadow())
Styler.apply(cell, borders)
Apply padding to a cell
Using the Padding
class it is possible to add padding to a cell.
Padding
can take left
, right
, top
, bottom
arguments or all
can be use to apply even padding to all sides at one.
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
borders = Borders(border_side=Side(color=CommonColor.BLUE), padding=Padding(left=1.5))
Styler.apply(cell, borders)
Cumulative borders
Applying more then one border style to a cell keeps previous formatting.
# ... other code
cell_obj = Calc.get_cell_obj("B2")
Calc.set_val(value="Hello World", sheet=sheet, cell_obj=cell_obj)
cell = Calc.get_cell(sheet, cell_obj)
border = Borders(diagonal_up=Side(color=CommonColor.RED))
Styler.apply(cell, border)
borders = Borders(diagonal_down=Side(color=CommonColor.BLUE))
Styler.apply(cell, borders)
Range of Cells
Default Borders
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
Styler.apply(cr, Borders().default)
Removing Borders
Applying Border().empty
to a cell or a range will clear all formatting.
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
Styler.apply(cr, Borders().default)
# ...
Styler.apply(cr, Borders().empty)
Colored borders
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(border_side=Side(color=CommonColor.RED))
Styler.apply(cr, borders)
Applying border to a side
Apply green border to left side.
Borders
constructor can also take left
, right
, top
, bottom
, vertical
, horizontal
, diagonal_down
and diagonal_up
arguments as sides.
In this case just pass in the left
side.
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(left=Side(color=CommonColor.GREEN))
Styler.apply(cr, borders)
Apply border with increased size
Passing width argument to Side() controls border width.
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
side_left_right = Side(color=CommonColor.GREEN, width=1.8)
borders = Borders(left=side_left_right, right=side_left_right)
Styler.apply(cr, borders)
Apply different top and side colors
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
side_top_bottom = Side(color=CommonColor.CHARTREUSE, width=1.3)
side_left_right = Side(color=CommonColor.ROYAL_BLUE, width=1.3)
borders = Borders(
top=side_top_bottom,
bottom=side_top_bottom,
left=side_left_right,
right=side_left_right,
)
Styler.apply(cr, borders)
Apply Diagonal border
UP
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(border_side=Side(), diagonal_up=Side(color=CommonColor.RED))
Styler.apply(cr, borders)
DOWN
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(border_side=Side(), diagonal_down=Side(color=CommonColor.RED))
Styler.apply(cr, borders)
Applying different style border
Using BorderLineKind
enumeration it is possible to change the border style to many different configurations.
In this example the border style is set to Dash-dot.
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(
border_side=Side(line=BorderLineKind.DASH_DOT, color=CommonColor.DARK_GREEN)
)
Styler.apply(cr, borders)
Apply Shadow to range
Using the Shadow
class shadows with a variety of options can be added to a range.
In this example the default shadow is used.
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(border_side=Side(color=CommonColor.BLUE), shadow=Shadow())
Styler.apply(cr, borders)
Apply horizontal and vertical lines
This example sets outer border to blue for all sides. Horizontal lines are set to dash-dash-dot with color of green. Vertical lines are set to double with a color of red.
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(
border_side=Side(color=CommonColor.BLUE),
horizontal=Side(line=BorderLineKind.DASH_DOT_DOT, color=CommonColor.GREEN),
vertical=Side(line=BorderLineKind.DOUBLE, color=CommonColor.RED),
)
Styler.apply(cr, borders)
Multiple Styles
# ... other code
rng_obj = Calc.get_range_obj("B2:F6")
cr = Calc.get_cell_range(sheet, rng_obj)
borders = Borders(
border_side=Side(color=CommonColor.BLUE_VIOLET, width=1.3),
diagonal_up=Side(color=CommonColor.RED),
diagonal_down=Side(color=CommonColor.RED),
)
Styler.apply(cr, borders)
rng_obj = Calc.get_range_obj("C3:E5")
cr = Calc.get_cell_range(sheet, rng_obj)
Styler.apply(cr, borders)
borders = Borders(
border_side=Side(color=CommonColor.BLUE),
horizontal=Side(line=BorderLineKind.DASH_DOT_DOT, color=CommonColor.GREEN),
vertical=Side(line=BorderLineKind.DOUBLE, color=CommonColor.RED),
)
Styler.apply(cr, borders)