Remove x namespace using openxml

I found this question and got a bit of the same question.

XLSX- how to get rid of the default namespace prefix x:?

I had a problem creating an OpenXML Excel worksheet. Especially for part of the style sheet.

When a style sheet somehow gets a style for the timeline (Excel 2013 only), it can generate an Excel file. Then the stylesheet contains the correct namespace ( xmlns:x="..."). This allows you to open it in Excel 2010. But when you save the generated Excel file in Excel 2010, the namespace x becomes the default namespace and is removed from all items except the timeline extension item. When you re-open the file in Excel, this will result in an error. When opening the same file in the OpenXml Productivity Tool, an error occurs that x is an unknown namespace.

So here is some XML result code.

The first after creating the Excel file (stylesheet.xml):

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<x:styleSheet xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" mc:Ignorable="x14ac">
  <x:fonts count="3" x14ac:knownFonts="1">
    <x:font>
      <x:sz val="11"/>
      <x:color theme="1"/>
      <x:name val="Calibri"/>
      <x:family val="2"/>
      <x:scheme val="minor"/>
    </x:font>
    <!-- more fonts -->
  </x:fonts>
  <x:fills count="7">
    <x:fill>
      <x:patternFill patternType="none"/>
    </x:fill>
    <!-- more fills -->
  </x:fills>
  <x:borders count="1">
    <x:border>
      <x:left/>
      <x:right/>
      <x:top/>
      <x:bottom/>
      <x:diagonal/>
    </x:border>
  </x:borders>
  <x:cellStyleXfs count="1">
    <x:xf numFmtId="0" fontId="0" fillId="0" borderId="0"/>
  </x:cellStyleXfs>
  <x:cellXfs count="18">
    <x:xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
    <x:xf numFmtId="14" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
    <x:xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
    <x:xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" pivotButton="1"/>
    <x:xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" applyAlignment="1">
      <x:alignment horizontal="left"/>
    </x:xf>
    <!-- more cells -->
  </x:cellXfs>
  <x:cellStyles count="1">
    <x:cellStyle name="Standaard" xfId="0" builtinId="0"/>
  </x:cellStyles>
  <x:dxfs count="1">
    <x:dxf>
      <x:numFmt numFmtId="19" formatCode="m/d/yyyy"/>
    </x:dxf>
  </x:dxfs>
  <x:tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/>
  <x:extLst>
    <x:ext xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main" uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}">
      <x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/>
    </x:ext>
    <x:ext xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main" uri="{9260A510-F301-46a8-8635-F512D64BE5F5}">
      <x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/>
    </x:ext>
  </x:extLst>
</x:styleSheet>

and after saving in Excel 2010

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" mc:Ignorable="x14ac">
  <fonts count="3" x14ac:knownFonts="1">
    <font>
      <sz val="11"/>
      <color theme="1"/>
      <name val="Calibri"/>
      <family val="2"/>
      <scheme val="minor"/>
    </font>
    <!-- more fonts -->
  <fills count="7">
    <fill>
      <patternFill patternType="none"/>
    </fill>
    <!-- more fills -->
  </fills>
  <borders count="1">
    <border>
      <left/>
      <right/>
      <top/>
      <bottom/>
      <diagonal/>
    </border>
  </borders>
  <cellStyleXfs count="1">
    <xf numFmtId="0" fontId="0" fillId="0" borderId="0"/>
  </cellStyleXfs>
  <cellXfs count="18">
    <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
    <xf numFmtId="14" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
    <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
    <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" pivotButton="1"/>
    <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" applyAlignment="1">
      <alignment horizontal="left"/>
    </xf>
    <!-- more cells -->
  </cellXfs>
  <cellStyles count="1">
    <cellStyle name="Standaard" xfId="0" builtinId="0"/>
  </cellStyles>
  <dxfs count="1">
    <dxf>
      <numFmt numFmtId="164" formatCode="m/d/yyyy"/>
    </dxf>
  </dxfs>
  <tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/>
  <extLst>
    <ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main">
      <x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/>
    </ext>
    <x:ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main">
      <x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/>
    </x:ext>
  </extLst>
</styleSheet>

. <x:ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" x, .

- , ? - x , x: . openXML SDK .

+4
1

, , - , , . , Excel 2010, , .

, :

        if (Document.WorkbookPart.WorkbookStylesPart.Stylesheet.Descendants<StylesheetExtensionList>().Any())
        {
            Document.WorkbookPart.WorkbookStylesPart.Stylesheet.RemoveAllChildren<StylesheetExtensionList>();
        }

Document.WorkbookPart.WorkbookStylesPart.Stylesheet.Save(), , , .

, , , , .

, ;)

+3

All Articles