init
This commit is contained in:
143
venv/lib/python3.12/site-packages/pyxlsb/handlers.py
Normal file
143
venv/lib/python3.12/site-packages/pyxlsb/handlers.py
Normal file
@@ -0,0 +1,143 @@
|
||||
from . import biff12
|
||||
from collections import namedtuple
|
||||
|
||||
class Handler(object):
|
||||
def __init__(self):
|
||||
super(Handler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
if reclen > 0:
|
||||
reader.skip(reclen)
|
||||
|
||||
|
||||
class BasicHandler(Handler):
|
||||
def __init__(self, name=None):
|
||||
super(BasicHandler, self).__init__()
|
||||
self.name = name
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
super(BasicHandler, self).read(reader, recid, reclen)
|
||||
return self.name
|
||||
|
||||
|
||||
class StringTableHandler(Handler):
|
||||
cls = namedtuple('sst', ['count', 'uniqueCount'])
|
||||
|
||||
def __init__(self):
|
||||
super(StringTableHandler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
count = reader.read_int()
|
||||
unique = reader.read_int()
|
||||
return self.cls._make([count, unique])
|
||||
|
||||
|
||||
class StringInstanceHandler(Handler):
|
||||
cls = namedtuple('si', ['t'])
|
||||
|
||||
def __init__(self):
|
||||
super(StringInstanceHandler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
reader.skip(1)
|
||||
val = reader.read_string()
|
||||
return self.cls._make([val])
|
||||
|
||||
|
||||
class SheetHandler(Handler):
|
||||
cls = namedtuple('sheet', ['sheetId', 'rId', 'name'])
|
||||
|
||||
def __init__(self):
|
||||
super(SheetHandler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
reader.skip(4)
|
||||
sheetid = reader.read_int()
|
||||
relid = reader.read_string()
|
||||
name = reader.read_string()
|
||||
return self.cls._make([sheetid, relid, name])
|
||||
|
||||
|
||||
class DimensionHandler(Handler):
|
||||
cls = namedtuple('dimension', ['r', 'c', 'h', 'w'])
|
||||
|
||||
def __init__(self):
|
||||
super(DimensionHandler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
r1 = reader.read_int()
|
||||
r2 = reader.read_int()
|
||||
c1 = reader.read_int()
|
||||
c2 = reader.read_int()
|
||||
return self.cls._make([r1, c1, r2 - r1 + 1, c2 - c1 + 1])
|
||||
|
||||
|
||||
class ColumnHandler(Handler):
|
||||
cls = namedtuple('col', ['c1', 'c2', 'width', 'style'])
|
||||
|
||||
def __init__(self):
|
||||
super(ColumnHandler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
c1 = reader.read_int()
|
||||
c2 = reader.read_int()
|
||||
width = reader.read_int() / 256
|
||||
style = reader.read_int()
|
||||
return self.cls._make([c1, c2, width, style])
|
||||
|
||||
|
||||
class RowHandler(Handler):
|
||||
cls = namedtuple('row', ['r'])
|
||||
|
||||
def __init__(self):
|
||||
super(RowHandler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
r = reader.read_int()
|
||||
return self.cls._make([r])
|
||||
|
||||
|
||||
class CellHandler(Handler):
|
||||
cls = namedtuple('c', ['c', 'v', 'f', 'style'])
|
||||
|
||||
def __init__(self):
|
||||
super(CellHandler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
col = reader.read_int()
|
||||
style = reader.read_int()
|
||||
val = None
|
||||
if recid == biff12.NUM:
|
||||
val = reader.read_float()
|
||||
elif recid == biff12.BOOLERR:
|
||||
val = hex(reader.read_byte())
|
||||
elif recid == biff12.BOOL:
|
||||
val = reader.read_byte() != 0
|
||||
elif recid == biff12.FLOAT:
|
||||
val = reader.read_double()
|
||||
elif recid == biff12.STRING:
|
||||
val = reader.read_int()
|
||||
elif recid == biff12.FORMULA_STRING:
|
||||
val = reader.read_string()
|
||||
elif recid == biff12.FORMULA_FLOAT:
|
||||
val = reader.read_double()
|
||||
elif recid == biff12.FORMULA_BOOL:
|
||||
val = reader.read_byte() != 0
|
||||
elif recid == biff12.FORMULA_BOOLERR:
|
||||
val = hex(reader.read_byte())
|
||||
return self.cls._make([col, val, None, style])
|
||||
|
||||
|
||||
class HyperlinkHandler(Handler):
|
||||
cls = namedtuple('hyperlink', ['r', 'c', 'h', 'w', 'rId'])
|
||||
|
||||
def __init__(self):
|
||||
super(HyperlinkHandler, self).__init__()
|
||||
|
||||
def read(self, reader, recid, reclen):
|
||||
r1 = reader.read_int()
|
||||
r2 = reader.read_int()
|
||||
c1 = reader.read_int()
|
||||
c2 = reader.read_int()
|
||||
rId = reader.read_string()
|
||||
return self.cls._make([r1, c1, r2 - r1 + 1, c2 - c1 + 1, rId])
|
||||
Reference in New Issue
Block a user