Mercurial > hg > ooxml
view excel.py @ 70:0003fe7b6b67
beginning work on class structure for excel annotation
author | Henry S. Thompson <ht@markup.co.uk> |
---|---|
date | Mon, 26 Jun 2017 18:08:25 +0100 |
parents | |
children | 54bb53434887 |
line wrap: on
line source
#!/usr/bin/python3 '''Class model for analysis of Excel spreadsheets''' from jsonweb.encode import to_object, dumper try: string_types=basestring except NameError: string_types=str @to_object(exclude_nulls=True) class Book(object): def __init__(self,source,sheets=[],formats=[]): assert(isinstance(source,string_types)) self.source=source sheets=list(sheets) assert(all(isinstance(s,Sheet) for s in sheets)) self.sheets=sheets formats=list(formats) self.formats=formats def addSheet(self,sheet): assert(isinstance(sheet,Sheet)) self.sheets.append(sheet) @to_object(exclude_nulls=True,suppress=["book"]) class Sheet(object): def __init__(self,name,book,tables=[],docs=[],misc=[]): assert(isinstance(name,string_types)) self.name=name assert(isinstance(book,Book)) self.book=book tables=list(tables) assert(all(isinstance(s,Region) for s in tables)) self.tables=tables docs=list(docs) assert(all(isinstance(s,Region) for s in docs)) self.docs=docs misc=list(misc) assert(all(isinstance(s,Region) for s in misc)) self.misc=misc book.addSheet(self) def addTable(self,table): assert(isinstance(table,Region)) self.tables.append(table) @to_object(exclude_nulls=True,suppress=["sheet"]) class Region(object): def __init__(self,name,sheet=None,ranges=[]): if sheet is not None: assert(isinstance(sheet,Sheet)) self.sheet=sheet ranges=list(ranges) assert(all(isinstance(s,Range) for s in ranges)) self.ranges=ranges assert(isinstance(name,string_types)) self.name=name if sheet is not None: sheet.addTable(self)