Updated script that can be controled by Nodejs web app
This commit is contained in:
113
lib/python3.13/site-packages/openpyxl/styles/fonts.py
Normal file
113
lib/python3.13/site-packages/openpyxl/styles/fonts.py
Normal file
@ -0,0 +1,113 @@
|
||||
# Copyright (c) 2010-2024 openpyxl
|
||||
|
||||
|
||||
from openpyxl.descriptors import (
|
||||
Alias,
|
||||
Sequence,
|
||||
Integer
|
||||
)
|
||||
from openpyxl.descriptors.serialisable import Serialisable
|
||||
|
||||
from openpyxl.descriptors.nested import (
|
||||
NestedValue,
|
||||
NestedBool,
|
||||
NestedNoneSet,
|
||||
NestedMinMax,
|
||||
NestedString,
|
||||
NestedInteger,
|
||||
NestedFloat,
|
||||
)
|
||||
from .colors import ColorDescriptor, Color, BLACK
|
||||
|
||||
from openpyxl.compat import safe_string
|
||||
from openpyxl.xml.functions import Element, SubElement
|
||||
from openpyxl.xml.constants import SHEET_MAIN_NS
|
||||
|
||||
|
||||
def _no_value(tagname, value, namespace=None):
|
||||
if value:
|
||||
return Element(tagname, val=safe_string(value))
|
||||
|
||||
|
||||
class Font(Serialisable):
|
||||
"""Font options used in styles."""
|
||||
|
||||
UNDERLINE_DOUBLE = 'double'
|
||||
UNDERLINE_DOUBLE_ACCOUNTING = 'doubleAccounting'
|
||||
UNDERLINE_SINGLE = 'single'
|
||||
UNDERLINE_SINGLE_ACCOUNTING = 'singleAccounting'
|
||||
|
||||
name = NestedString(allow_none=True)
|
||||
charset = NestedInteger(allow_none=True)
|
||||
family = NestedMinMax(min=0, max=14, allow_none=True)
|
||||
sz = NestedFloat(allow_none=True)
|
||||
size = Alias("sz")
|
||||
b = NestedBool(to_tree=_no_value)
|
||||
bold = Alias("b")
|
||||
i = NestedBool(to_tree=_no_value)
|
||||
italic = Alias("i")
|
||||
strike = NestedBool(allow_none=True)
|
||||
strikethrough = Alias("strike")
|
||||
outline = NestedBool(allow_none=True)
|
||||
shadow = NestedBool(allow_none=True)
|
||||
condense = NestedBool(allow_none=True)
|
||||
extend = NestedBool(allow_none=True)
|
||||
u = NestedNoneSet(values=('single', 'double', 'singleAccounting',
|
||||
'doubleAccounting'))
|
||||
underline = Alias("u")
|
||||
vertAlign = NestedNoneSet(values=('superscript', 'subscript', 'baseline'))
|
||||
color = ColorDescriptor(allow_none=True)
|
||||
scheme = NestedNoneSet(values=("major", "minor"))
|
||||
|
||||
tagname = "font"
|
||||
|
||||
__elements__ = ('name', 'charset', 'family', 'b', 'i', 'strike', 'outline',
|
||||
'shadow', 'condense', 'color', 'extend', 'sz', 'u', 'vertAlign',
|
||||
'scheme')
|
||||
|
||||
|
||||
def __init__(self, name=None, sz=None, b=None, i=None, charset=None,
|
||||
u=None, strike=None, color=None, scheme=None, family=None, size=None,
|
||||
bold=None, italic=None, strikethrough=None, underline=None,
|
||||
vertAlign=None, outline=None, shadow=None, condense=None,
|
||||
extend=None):
|
||||
self.name = name
|
||||
self.family = family
|
||||
if size is not None:
|
||||
sz = size
|
||||
self.sz = sz
|
||||
if bold is not None:
|
||||
b = bold
|
||||
self.b = b
|
||||
if italic is not None:
|
||||
i = italic
|
||||
self.i = i
|
||||
if underline is not None:
|
||||
u = underline
|
||||
self.u = u
|
||||
if strikethrough is not None:
|
||||
strike = strikethrough
|
||||
self.strike = strike
|
||||
self.color = color
|
||||
self.vertAlign = vertAlign
|
||||
self.charset = charset
|
||||
self.outline = outline
|
||||
self.shadow = shadow
|
||||
self.condense = condense
|
||||
self.extend = extend
|
||||
self.scheme = scheme
|
||||
|
||||
|
||||
@classmethod
|
||||
def from_tree(cls, node):
|
||||
"""
|
||||
Set default value for underline if child element is present
|
||||
"""
|
||||
underline = node.find("{%s}u" % SHEET_MAIN_NS)
|
||||
if underline is not None and underline.get('val') is None:
|
||||
underline.set("val", "single")
|
||||
return super().from_tree(node)
|
||||
|
||||
|
||||
DEFAULT_FONT = Font(name="Calibri", sz=11, family=2, b=False, i=False,
|
||||
color=Color(theme=1), scheme="minor")
|
Reference in New Issue
Block a user