Пример #1
0
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
Пример #2
0
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