def get_datasheet_names(wb: Book) -> List[str]: """Gets data sheet names from a workbook Args: wb (Book): Pre-loaded XLRD Workbook obj Returns: list(str): List of datasheet names """ data_sheets: List[xlrd.sheet] = \ [x for x in wb.sheets() if x.name.startswith('data')] datasheet_names: List[str] = [x.name for x in data_sheets] return datasheet_names
def read_xlsform_data(workbook: Book) -> OrderedDict: """Return XLSForm definition data read from an XLRD Workbook.""" sheets = {x.name for x in workbook.sheets()} required = {"survey", "choices", "settings"} if not required.issubset(sheets): raise ValueError( "The required sheets for an XLSForm definition ({0}) were not " "found in the workbook sheets ({1}).".format(required, sheets)) survey = xlrd_sheet_to_list_of_dict( workbook.sheet_by_name(sheet_name='survey')) choices = xlrd_sheet_to_list_of_dict( workbook.sheet_by_name(sheet_name='choices')) settings = xlrd_sheet_to_list_of_dict( workbook.sheet_by_name(sheet_name='settings')) form_def = OrderedDict() form_def['@settings'] = settings[0] for item in survey: if item['type'].startswith('select'): select_type, choice_name = item['type'].split(' ') choice_list = [x for x in choices if x['list_name'] == choice_name] item['choices'] = choice_list form_def[item['name']] = item return form_def