diff --git a/pyxform/constants.py b/pyxform/constants.py index bb5fb0510..dea5fa00c 100644 --- a/pyxform/constants.py +++ b/pyxform/constants.py @@ -69,4 +69,14 @@ OSM = u"osm" OSM_TYPE = u"binary" -NAMESPACES = u'namespaces' +NAMESPACES = u"namespaces" + +SUPPORTED_SHEET_NAMES = [ + SURVEY, + CASCADING_CHOICES, + CHOICES, + COLUMNS, + CHOICES_AND_COLUMNS, + SETTINGS, + OSM, +] diff --git a/pyxform/tests/bug_example_xls/xl_date_ambiguous.xlsx b/pyxform/tests/bug_example_xls/xl_date_ambiguous.xlsx new file mode 100644 index 000000000..a179258fe Binary files /dev/null and b/pyxform/tests/bug_example_xls/xl_date_ambiguous.xlsx differ diff --git a/pyxform/tests/bug_tests.py b/pyxform/tests/bug_tests.py index e67b7dc71..49a7fd93b 100644 --- a/pyxform/tests/bug_tests.py +++ b/pyxform/tests/bug_tests.py @@ -219,5 +219,16 @@ def test_blank_second_row(self): self.assertTrue(len(survey_dict) > 0) -if __name__ == '__main__': +class TestXLDateAmbigous(unittest.TestCase): + """Test non standard sheet with exception is processed successfully.""" + def test_xl_date_ambigous(self): + """Test non standard sheet with exception is processed successfully.""" + filename = "xl_date_ambiguous.xlsx" + path_to_excel_file = os.path.join(DIR, "bug_example_xls", filename) + xls_reader = SurveyReader(path_to_excel_file) + survey_dict = xls_reader.to_json_dict() + self.assertTrue(len(survey_dict) > 0) + + +if __name__ == "__main__": unittest.main() diff --git a/pyxform/xls2json_backends.py b/pyxform/xls2json_backends.py index a805b066b..d139459fc 100644 --- a/pyxform/xls2json_backends.py +++ b/pyxform/xls2json_backends.py @@ -210,11 +210,16 @@ def slugify(s): result = OrderedDict() for sheet in workbook.sheets(): + # Do not process sheets that have nothing to do with XLSForm. + if sheet.name not in constants.SUPPORTED_SHEET_NAMES: + continue if sheet.name == constants.CASCADING_CHOICES: result[sheet.name] = _xls_to_dict_cascade_sheet(sheet) else: - result[sheet.name], result[u"%s_header" % sheet.name] = \ - xls_to_dict_normal_sheet(sheet) + result[sheet.name], result[ + u"%s_header" % sheet.name + ] = xls_to_dict_normal_sheet(sheet) + return result