def load_cells(self, boundsheet, shared_table): row_cnt = 0 with self._xlsb_workbook.get_sheet_by_name(boundsheet.name) as sheet: for row in sheet: if row_cnt > 1048576: break row_cnt = row_cnt + 1 column_cnt = 0 for cell in row: if column_cnt > 16384: break tmp_cell = Cell() tmp_cell.row = cell.row_num + 1 tmp_cell.column = Cell.convert_to_column_name(cell.col + 1) tmp_cell.value = cell.value tmp_cell.sheet = boundsheet formula_str = Formula.parse(cell.formula) if formula_str._tokens: try: tmp_cell.formula = '=' + formula_str.stringify( self._xlsb_workbook) except NotImplementedError as exp: print('ERROR({}) {}'.format(exp, str(cell))) except Exception: print('ERROR ' + str(cell)) if tmp_cell.value is not None or tmp_cell.formula is not None: boundsheet.cells[ tmp_cell.get_local_address()] = tmp_cell column_cnt = column_cnt + 1
import sys import time from pyxlsb2 import open_workbook from pyxlsb2.formula import Formula a = time.time() print('Opening workbook... ', end='', flush=True) with open_workbook(sys.argv[1]) as wb: d = time.time() - a print('Done! ({} seconds)'.format(d)) for s in wb.sheets: print('Reading sheet {}...\n'.format(s), end='', flush=True) a = time.time() with wb.get_sheet_by_name(s.name) as sheet: for row in sheet: for cell in row: formula_str = Formula.parse(cell.formula) if formula_str._tokens: try: print(formula_str.stringify(wb)) except NotImplementedError as exp: print('ERROR({}) {}'.format(exp, str(cell))) except Exception: print('ERROR ' + str(cell)) d = time.time() - a print('Done! ({} seconds)'.format(d))
def test_stringify(self): self.assertEqual(Formula([StringPtg('Hello "World"')]).stringify(self.wb), '"Hello ""World"""') self.assertEqual(Formula([IntegerPtg(1), IntegerPtg(2), AddPtg()]).stringify(self.wb), '1+2') self.assertEqual(Formula([Ref3dPtg(1, 2, 3, False, False, Ref3dPtg.ptg)]).stringify(self.wb), 'Sheet2!R3C4')