Know Which File Contains the Property
docProps/core.xmlcontains core properties such as the creator, last-modified-by, and the created and modified timestamps.docProps/app.xmlcontains extended application properties such as the creating application, the security flag, the sheet list, and the application version.
Both files are reached through _rels/.rels at the package root. See the relationship guide if Excel cannot find them.
What Healthy docProps Files Look Like
Both files below come from the clean reference workbook, reformatted so each element is on its own line. Core timestamps use the W3CDTF format, which follows ISO 8601, and must carry an xsi:type="dcterms:W3CDTF" attribute.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dc:creator>Me</dc:creator>
<cp:lastModifiedBy>Me</cp:lastModifiedBy>
<dcterms:created xsi:type="dcterms:W3CDTF">2025-12-29T02:30:57Z</dcterms:created>
<dcterms:modified xsi:type="dcterms:W3CDTF">2025-12-30T05:11:50Z</dcterms:modified>
</cp:coreProperties>
In app.xml, HeadingPairs and TitlesOfParts together list the worksheets: the first holds a label and a count, the second holds the sheet names. The size of each vector must equal the number of items inside it, and the count must match the number of sheets in workbook.xml.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
<Application>Microsoft Excel</Application>
<DocSecurity>0</DocSecurity>
<ScaleCrop>false</ScaleCrop>
<HeadingPairs>
<vt:vector size="2" baseType="variant">
<vt:variant>
<vt:lpstr>Worksheets</vt:lpstr>
</vt:variant>
<vt:variant>
<vt:i4>2</vt:i4>
</vt:variant>
</vt:vector>
</HeadingPairs>
<TitlesOfParts>
<vt:vector size="2" baseType="lpstr">
<vt:lpstr>Sheet1</vt:lpstr>
<vt:lpstr>Sheet2</vt:lpstr>
</vt:vector>
</TitlesOfParts>
<Company/>
<LinksUpToDate>false</LinksUpToDate>
<SharedDoc>false</SharedDoc>
<HyperlinksChanged>false</HyperlinksChanged>
<AppVersion>16.0300</AppVersion>
</Properties>
Invalid Date Value in core.xml
The XML is well-formed, but the text inside the timestamp elements is not a valid W3CDTF date. Tools that write free-form text into the field are the usual cause.
<dcterms:created xsi:type="dcterms:W3CDTF">invalid-date-format</dcterms:created>
<!-- ↑ CORRUPT: not a W3CDTF timestamp -->
Fix: Replace the text with the real date and time from a trusted source, such as the file's system timestamps or your own records. If you cannot determine the value, remove the whole optional dcterms:created element. Do not invent a historical timestamp. Keep the root element and its namespace declarations intact.
<!-- Fixed: verified UTC timestamp -->
<dcterms:created xsi:type="dcterms:W3CDTF">2025-12-29T02:30:57Z</dcterms:created>
Date Elements Missing Their Type
The dates themselves are valid, but the xsi:type="dcterms:W3CDTF" attribute has been stripped from both the created and modified elements. The core properties format requires that attribute to say how the date is encoded.
<dcterms:created>2025-12-29T02:30:57Z</dcterms:created>
<!-- ← CORRUPT: no xsi:type="dcterms:W3CDTF" -->
<dcterms:modified>2025-12-30T05:11:50Z</dcterms:modified>
<!-- ← CORRUPT -->
Fix: Add the attribute back to each element. The dates do not need to change. Check that the xsi prefix is declared on the root element, since the attribute depends on it.
<!-- Fixed -->
<dcterms:created xsi:type="dcterms:W3CDTF">2025-12-29T02:30:57Z</dcterms:created>
<dcterms:modified xsi:type="dcterms:W3CDTF">2025-12-30T05:11:50Z</dcterms:modified>
Missing Namespace Declaration
An element uses a prefix such as dcterms: but the root element no longer declares it. The XML parser rejects the whole file because it cannot resolve the prefix.
<cp:coreProperties
xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
xmlns:dc="http://purl.org/dc/elements/1.1/"
<!-- ← CORRUPT: xmlns:dcterms="http://purl.org/dc/terms/" is missing -->
xmlns:dcmitype="http://purl.org/dc/dcmitype/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dcterms:created xsi:type="dcterms:W3CDTF">2025-12-29T02:30:57Z</dcterms:created>
Fix: Add the missing declaration back to the root element, using the exact URI. Do not change the element names.
<!-- Fixed: add to the root element -->
xmlns:dcterms="http://purl.org/dc/terms/"
Invalid Values in app.xml
Extra elements have been appended to app.xml with values that make no sense. DocSecurity is a bit-flag whose defined values are 0, 1, 2, 4, and 8, and this one is a second DocSecurity element alongside the correct one. The counts Pages, Words, and Characters must be whole numbers, and the values given are negative or not a number at all.
<DocSecurity>0</DocSecurity>
...
<AppVersion>16.0300</AppVersion>
<DocSecurity>999</DocSecurity>
<!-- ↑ CORRUPT: duplicate element, and 999 is not a defined value -->
<Pages>-5</Pages>
<Words>-100</Words>
<Characters>not-a-number</Characters>
<!-- ↑ CORRUPT: negative counts and a non-numeric value -->
Fix: Delete the appended elements. Excel does not normally write Pages, Words, or Characters for a workbook, so nothing is lost by removing them. If you want to keep one, replace it with a correct non-negative whole number. Make sure only one DocSecurity element remains and that it holds a defined value.
<!-- Fixed: only the original element remains -->
<DocSecurity>0</DocSecurity>
Malformed HeadingPairs and TitlesOfParts
A second HeadingPairs or TitlesOfParts element has been added, and each one disagrees with itself. The size says one thing, the number of items says another, and the sheet count does not match the real workbook.
<HeadingPairs>
<vt:vector size="4" baseType="variant"> <!-- ← CORRUPT: size says 4 -->
<vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant>
<vt:variant><vt:i4>3</vt:i4></vt:variant> <!-- ← CORRUPT: the workbook has 2 sheets -->
<!-- only 2 items present -->
</vt:vector>
</HeadingPairs>
<TitlesOfParts>
<vt:vector size="10" baseType="lpstr"> <!-- ← CORRUPT: size says 10 -->
<vt:lpstr>Sheet1</vt:lpstr>
<vt:lpstr>Sheet2</vt:lpstr>
<!-- only 2 items present -->
</vt:vector>
</TitlesOfParts>
Fix: Each of these elements may appear only once, and the original, correct ones are already in the file. Delete the extra copies. If you do need to edit the originals, make each size equal the number of child items, and make the sheet count equal the number of <sheet> entries in workbook.xml.
<!-- Fixed: the original, consistent versions are kept -->
<HeadingPairs>
<vt:vector size="2" baseType="variant">
<vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant>
<vt:variant><vt:i4>2</vt:i4></vt:variant>
</vt:vector>
</HeadingPairs>
<TitlesOfParts>
<vt:vector size="2" baseType="lpstr">
<vt:lpstr>Sheet1</vt:lpstr>
<vt:lpstr>Sheet2</vt:lpstr>
</vt:vector>
</TitlesOfParts>
Empty or Missing Optional Properties
Not every odd-looking property is corruption. Author, last-modified-by, and company are descriptive and optional. An empty element or a missing one is valid XML and does not affect a single cell. These files are in the library to show what a repair tool should leave alone, or fill in only if you want the metadata.
<!-- DocProps_MissingCreator: element present but empty -->
<dc:creator></dc:creator>
<!-- DocProps_MissingLastModifiedBy: element removed -->
<!-- <cp:lastModifiedBy> is simply absent -->
<!-- DocProps_EmptyCompany: element present but empty (this is how Excel itself saves it) -->
<Company/>
What to do: Nothing is required. If you want the metadata restored, type a real name back into dc:creator or add <cp:lastModifiedBy> with the real value. Do not invent author details. Remember that removing author or company information is a privacy choice, separate from repairing corruption.
<!-- Optional: restore real values -->
<dc:creator>Me</dc:creator>
<cp:lastModifiedBy>Me</cp:lastModifiedBy>
A docProps Part Is Missing
The properties file is gone from the ZIP, but the root relationship and the manifest override still point at it. Neither file contains worksheet data, so this is recoverable.
docProps/
<- CORRUPT: core.xml (or app.xml) is not in the archive
<!-- _rels/.rels: still present -->
<Relationship Id="rId2" Type=".../metadata/core-properties" Target="docProps/core.xml"/>
<!-- [Content_Types].xml: still present -->
<Override PartName="/docProps/core.xml" ContentType="...core-properties+xml"/>
Fix: Restore the file from a backup if you have one. Otherwise recreate it from the healthy examples at the top of this guide, with real values. For app.xml, set the sheet names and count to match workbook.xml. For core.xml, use a correct creator and sensible timestamps rather than copying someone else's. If you would rather not keep the part, remove both its relationship and its manifest override so nothing points at a missing file.
<!-- Fixed (recreated minimal core.xml) -->
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties
xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dcterms:modified xsi:type="dcterms:W3CDTF">2026-01-01T00:00:00Z</dcterms:modified>
</cp:coreProperties>
Use the real date and time of the repair for the modified value; the one above is only an illustration.
If the File Is Truncated or Extensively Damaged
- Extract the named
docPropsfile and open it in an XML-aware editor. - Look for malformed tags, invalid characters, incorrect namespaces, and invalid date text.
- Correct only the property that is demonstrably invalid, preserving the namespaces and all other metadata.
- If the file is cut off or heavily damaged, restore it from a matching backup rather than constructing a replacement from guesses.
- Reinsert the part, confirm its root relationship and content type declaration, then test the copy in Excel.
Privacy and Verification
Inspect the repaired properties in Excel under File > Info. Confirm that the sheets, formulas, and values are unchanged.
docProps affects descriptive metadata, not worksheet contents. After a successful open, still run a workbook-content check.
Checklist: How to Check docProps in Your File
- Rename your XLSX to .zip and open the
docPropsfolder - Identify whether the problem is in
core.xmlorapp.xml - Open the file in VS Code (with the Red Hat XML extension) and press
Shift+Alt+F; a parse error points to a missing namespace or bad tag - Check that every prefix used (
dc,dcterms,xsi,cp) is declared on the root element - Check that each timestamp is a valid W3CDTF date and carries
xsi:type="dcterms:W3CDTF" - Check that no element appears twice, especially
DocSecurity,HeadingPairs, andTitlesOfParts - Check that each
vectorsize equals its number of items, and that the sheet count matchesworkbook.xml - Confirm
_rels/.relsand[Content_Types].xmlstill declare both files, then verify metadata and worksheet content in Excel