Where to Find the Manifest
Open the XLSX as a ZIP archive using the steps in Edit and Re-Zip an XLSX. [Content_Types].xml sits beside the _rels folder and the xl folder at the root of the archive, not inside xl.
What a Healthy [Content_Types].xml Looks Like
There are two kinds of declaration. A Default applies to every file with a given extension. An Override applies to one exact package path and takes priority over any Default. Because .xml falls back to the generic application/xml type, every worksheet, style sheet, theme, and the workbook itself needs its own override. This is the manifest from the clean reference workbook, reformatted so each entry is on its own line:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/xl/worksheets/sheet2.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
<Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>
<Override PartName="/xl/calcChain.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml"/>
<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
</Types>
Missing Override for an Existing Part
An override has been deleted, but the part it described is still in the ZIP. Without the override, Excel falls back to the generic application/xml type and no longer knows the part is a style sheet, a shared strings table, or the workbook. Losing the workbook override is the most serious, because Excel cannot identify the main document part at all.
<!-- Missing shared strings declaration -->
<Override PartName="/xl/styles.xml" ContentType="...spreadsheetml.styles+xml"/>
<!-- ← CORRUPT: no Override for /xl/sharedStrings.xml, but the file exists -->
<Override PartName="/xl/calcChain.xml" ContentType="...spreadsheetml.calcChain+xml"/>
<!-- Missing styles declaration -->
<Override PartName="/xl/theme/theme1.xml" ContentType="...theme+xml"/>
<!-- ← CORRUPT: no Override for /xl/styles.xml, but the file exists -->
<Override PartName="/xl/sharedStrings.xml" ContentType="...spreadsheetml.sharedStrings+xml"/>
<!-- Missing workbook declaration -->
<Default Extension="xml" ContentType="application/xml"/>
<!-- ← CORRUPT: no Override for /xl/workbook.xml -->
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="...spreadsheetml.worksheet+xml"/>
Fix: Confirm the part really exists in the ZIP, then add one override for it inside the existing <Types> element, using the content type that matches the part. The new line is a child element, not a replacement root document. The types for the parts in this workbook are:
/xl/workbook.xml:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml/xl/styles.xml:application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml/xl/sharedStrings.xml:application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml
<!-- Fixed: add inside <Types> -->
<Override PartName="/xl/sharedStrings.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>
<Override PartName="/xl/styles.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
<Override PartName="/xl/workbook.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
Wrong Content Type on a Part
The overrides exist, but they name a format that does not exist or does not match the part. Each part type has its own content type, and worksheet, styles, shared strings, and theme types are not interchangeable.
<Override PartName="/xl/worksheets/sheet1.xml"
ContentType="application/vnd.WRONG-TYPE+xml"/>
<!-- ← CORRUPT: not a real content type -->
<Override PartName="/xl/worksheets/sheet2.xml"
ContentType="application/vnd.WRONG-TYPE+xml"/>
<!-- ← CORRUPT -->
Fix: Open each part named in PartName and look at its root element. A <worksheet> root means the worksheet type is correct. Replace only the ContentType value on each affected line and leave the rest of the file alone.
<!-- Fixed -->
<Override PartName="/xl/worksheets/sheet1.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/xl/worksheets/sheet2.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
Orphaned Override: Part Does Not Exist
An orphaned entry declares a part that is not in the ZIP. It is often left behind when a tool deletes a sheet or an add-in part but leaves the manifest untouched. Some readers ignore it, but strict validators and some libraries do not, so it is worth cleaning up.
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="...spreadsheetml.worksheet+xml"/>
<Override PartName="/xl/worksheets/sheet2.xml" ContentType="...spreadsheetml.worksheet+xml"/>
...
<Override PartName="/xl/worksheets/sheet99.xml" ContentType="...spreadsheetml.worksheet+xml"/>
<!-- ↑ CORRUPT: there is no xl/worksheets/sheet99.xml in the archive -->
Fix: Before deleting anything, check three things: the part is truly absent from the ZIP (watch for different capitalisation or a different folder), no relationship in workbook.xml.rels points to it, and no sheet in workbook.xml uses it. If all three are clear, remove the override. If a relationship or sheet entry does point to it, the real problem is a lost part; see Fix Missing XLSX Parts.
<!-- Fixed: the sheet99.xml Override is deleted; every other entry is untouched -->
Duplicate PartName Entries
Each exact PartName must be declared once. Two overrides for the same path make the manifest ambiguous. When both lines are identical it is only untidy, but when they disagree Excel cannot know which one is right.
<Override PartName="/xl/workbook.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
...
<Override PartName="/xl/workbook.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<!-- ↑ CORRUPT: /xl/workbook.xml is declared twice -->
Fix: Search the file for each PartName and keep exactly one declaration per path. If the duplicates disagree, keep the one that matches what the part actually is and delete the other.
<!-- Fixed: one declaration per part -->
<Override PartName="/xl/workbook.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
Malformed Manifest XML
A damaged tag stops the whole manifest from parsing, so Excel cannot read any declaration, even the correct ones. In both of these examples an Override element that should end in /> has lost part or all of its closing.
<!-- Variant A: the "/" is missing, so the tag is never closed -->
<Override PartName="/xl/workbook.xml"
ContentType="...spreadsheetml.sheet.main+xml">
<!-- ← CORRUPT: should end in "/>" -->
<!-- Variant B: the whole "/>" is missing, so the next tag starts inside this one -->
<Override PartName="/xl/workbook.xml"
ContentType="...spreadsheetml.sheet.main+xml"
<Override PartName="/xl/worksheets/sheet1.xml" ...
Fix: Open the file in an XML-aware editor such as VS Code with the Red Hat XML extension. It will underline the first broken tag. Restore the closing /> and check for further errors, since an editor may stop at the first one it finds.
<!-- Fixed -->
<Override PartName="/xl/workbook.xml"
ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
[Content_Types].xml Missing Entirely
If the manifest is not in the ZIP, Excel has no way to interpret any part. Check first that it has not simply been moved: it must be at the archive root, not inside a wrapper folder created when the package was re-zipped.
Corrupted.xlsx
_rels/.rels
docProps/
xl/
<- CORRUPT: [Content_Types].xml is not in the archive
Fix: Restore the file from a backup if you can. Otherwise it can be rebuilt, because every part in the package has a predictable type: add the two Default entries, then one Override for each part using the types in the healthy file at the top of this guide. A workbook with extra parts (drawings, tables, images, macros) needs a declaration for each of those too, so compare with a clean workbook that has the same features before re-zipping.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<!-- one <Override> per part: workbook, each worksheet, styles, sharedStrings,
theme, calcChain, docProps/core, docProps/app -->
</Types>
Checklist: How to Check [Content_Types].xml in Your File
- Rename your XLSX to .zip and open it
- Confirm
[Content_Types].xmlis at the root of the archive, beside_relsandxl, not inside another folder - Open it in VS Code (with the Red Hat XML extension) and press
Shift+Alt+Fto format it so each entry is on its own line - Check that the file parses: a red underline means a tag is not closed
- Check that every
Overridepoints to a part that exists, using the exact path with the leading slash - Check that the workbook, every worksheet, styles, shared strings, and theme each have a matching declaration
- Check that no
PartNameappears more than once - Check each
ContentTypeagainst the root element of the part it describes - Re-zip with
[Content_Types].xmlat the archive root, then open the copy in Excel