Always work on a copy Metadata may contain author names or other private information. Avoid uploading confidential workbooks to services you do not trust.

Know Which File Contains the Property

  • docProps/core.xml contains core properties such as the creator, last-modified-by, and the created and modified timestamps.
  • docProps/app.xml contains 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>
📄
CLEAN-template-workbook.xlsx Clean Reference
A valid two-sheet workbook saved by Excel. Open, unzip, and inspect this file as a working reference while following the examples above.
Download

Type 1

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>
📄
CORRUPT-docprops-invalid-date-format.xlsx Corrupt Example
The created timestamp in docProps/core.xml contains the text "invalid-date-format" instead of a W3CDTF date.
Download
Type 2

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>
📄
CORRUPT-docprops-missing-date-type.xlsx Corrupt Example
Both timestamps in docProps/core.xml are valid dates, but their xsi:type attributes have been removed.
Download
Type 3

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/"
📄
CORRUPT-docprops-missing-namespace.xlsx Corrupt Example
docProps/core.xml uses the dcterms: prefix, but the xmlns:dcterms declaration has been removed from the root element.
Download
Type 4

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>
📄
CORRUPT-docprops-invalid-doc-security.xlsx Corrupt Example
A second DocSecurity element with the value 999 has been added to app.xml.
Download
📄
CORRUPT-docprops-invalid-numeric-values.xlsx Corrupt Example
app.xml contains Pages = -5, Words = -100, and Characters = not-a-number.
Download
Type 5

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>
📄
CORRUPT-docprops-malformed-heading-pairs.xlsx Corrupt Example
A second HeadingPairs element has a vector size of 4 but only two items, and a sheet count of 3 in a two-sheet workbook.
Download
📄
CORRUPT-docprops-malformed-titles-of-parts.xlsx Corrupt Example
A second TitlesOfParts element has a vector size of 10 but only two items.
Download
Type 6

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>
📄
CORRUPT-docprops-missing-creator.xlsx Corrupt Example
docProps/core.xml has an empty dc:creator element.
Download
📄
CORRUPT-docprops-missing-last-modified-by.xlsx Corrupt Example
docProps/core.xml has no cp:lastModifiedBy element.
Download
📄
CLEAN-docprops-empty-company.xlsx Clean Reference
app.xml has an empty Company element. This file is identical to the clean reference workbook, because Excel saves the element empty by default.
Download
Type 7

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.

📄
CORRUPT-missing-core-xml.xlsx Corrupt Example
docProps/core.xml has been removed, while _rels/.rels and [Content_Types].xml still reference it.
Download
📄
CORRUPT-missing-app-xml.xlsx Corrupt Example
docProps/app.xml has been removed, while _rels/.rels and [Content_Types].xml still reference it.
Download

If the File Is Truncated or Extensively Damaged

  1. Extract the named docProps file and open it in an XML-aware editor.
  2. Look for malformed tags, invalid characters, incorrect namespaces, and invalid date text.
  3. Correct only the property that is demonstrably invalid, preserving the namespaces and all other metadata.
  4. If the file is cut off or heavily damaged, restore it from a matching backup rather than constructing a replacement from guesses.
  5. 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.

Repair scope Fixing 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 docProps folder
  • Identify whether the problem is in core.xml or app.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, and TitlesOfParts
  • Check that each vector size equals its number of items, and that the sheet count matches workbook.xml
  • Confirm _rels/.rels and [Content_Types].xml still declare both files, then verify metadata and worksheet content in Excel