Example #1
0
    def __init__(self, excel, header, reheader, sheets='all', exclude=None):
        self._xlrd_handler = None
        self._dist = []
        self._pointer_stack = []
        # excel not None
        if excel:
            self._format = xlrd.inspect_format(excel)
            self.excel_path = excel
            self._xlrd_handler = xlrd.open_workbook(self.excel_path)
        else:
            logging.error("Excel handler is None")
            raise ValueError("Excel handler不能为None")

        # Register the parameter
        self.header = header
        self.reheader = reheader

        if sheets == "all":
            # Get all excel sheets
            self.sheets = self._xlrd_handler.sheet_names()
        else:
            self.sheets = sheets

        if exclude:
            for i in exclude:
                try:
                    # Remove sheets you don't want
                    self.sheets.remove(i)
                except ValueError:
                    pass

        # TODO Priority and Level list check, length equal
        if len(self.header) != len(self.reheader):
            raise ValueError("Header 和 Reheader 长度不一致")

        for dic in self.header:
            if len(dic["Priority"]) != len(dic["Level"]):
                raise ValueError("Priority 和 Level 长度不一致")

        # Reference list indicate the excel sheet row belong to which level
        self._ref_list = []
        for _ in range(max(tuple(j for i in self.header for j in i["Level"]))):
            self._ref_list.append([])
        for i in self.header:
            for level, priority in zip(i["Level"], i["Priority"]):
                self._ref_list[int(level) - 1].append(priority)

        # Init stack
        self._pointer_stack = [
            None for _ in range(
                1 + max(tuple(j for i in self.header for j in i["Level"])))
        ]
Example #2
0
def test_xlsb():
    assert inspect_format(from_sample('sample.xlsb')) == 'xlsb'
Example #3
0
def test_unknown():
    assert inspect_format(from_sample('sample.txt')) is None
Example #4
0
def test_content():
    with open(from_sample('sample.xlsx'), 'rb') as source:
        assert inspect_format(content=source.read()) == 'xlsx'
Example #5
0
def test_xls():
    assert inspect_format(from_sample('namesdemo.xls')) == 'xls'
Example #6
0
def test_zip():
    assert inspect_format(from_sample('sample.zip')) == 'zip'
Example #7
0
def test_ods():
    assert inspect_format(from_sample('sample.ods')) == 'ods'