def test_overwritten_default(): from ..excel import _find_workbook_part src = """ <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"> <Default Extension="xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/> </Types> """ node = fromstring(src) package = Manifest.from_tree(node) assert _find_workbook_part(package) == Override("/xl/workbook.xml", XLSX)
def test_find_standard_workbook_part(datadir, wb_type, wb_name): from ..excel import _find_workbook_part src = """ <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"> <Override ContentType="{0}" PartName="{1}"/> </Types> """.format(wb_type, wb_name) node = fromstring(src) package = Manifest.from_tree(node) assert _find_workbook_part(package) == Override(wb_name, wb_type)
def _find_workbook_part(package): workbook_types = [XLTM, XLTX, XLSM, XLSX] for ct in workbook_types: part = package.find(ct) if part: return part # some applications reassign the default for application/xml defaults = set((p.ContentType for p in package.Default)) workbook_type = defaults & set(workbook_types) if workbook_type: return Override("/" + ARC_WORKBOOK, workbook_type.pop()) raise IOError("File contains no valid workbook part")