2009-07-29 1 views
7

Я создаю таблицу XLSX, используя OOXML SDK, и мне нужно избавиться от префикса пространства имен x:. Как я могу это достичь?XLSX- как избавиться от префикса пространства имен по умолчанию x :?

 
using (SpreadsheetDocument doc = SpreadsheetDocument.Open("template.xlsx", true)) 
      { 
       //Save the shared string table part 
       if (doc.WorkbookPart.GetPartsOfType().Count() > 0) 
       { 
        SharedStringTablePart shareStringPart = 
doc.WorkbookPart.GetPartsOfType().First(); shareStringPart.SharedStringTable.Save(); } //Save the workbook doc.WorkbookPart.Workbook.Save(); }

Здесь исходный файл XLSX исходит из Excel 2007 и не имеет префикс, однако, после операции сохранения появляется приставка. Как я могу избежать этого?

+1

Зачем вам нужно, чтобы избавиться от приставки? Какая проблема вызвана префиксом? –

+0

Поскольку у клиента есть какое-то странное программное обеспечение, которое не может импортировать файл с префиксом - и это не имеет никакого отношения к этому. Я просто удалил префиксы вручную, и он был импортирован в порядке. – user116884

+0

Как применить шаг последующей обработки к вашему документу XSLX, который удаляет префикс и устанавливает соответствующее пространство имен по умолчанию? См. Также http://stackoverflow.com/questions/413050/c-how-to-remove-namespace-information-from-xml-elements/413088#413088 –

ответ

0

Если я не ошибаюсь, исходный файл также именуется - только в форме пространства имен по умолчанию. Что не так с пространством имен в первую очередь?

+0

Вы правы. Это то, что я хочу - пространство имен по умолчанию. Это потому, что у моего клиента есть какое-то странное программное обеспечение, которое не может импортировать XLSX с префиксом - и это не имеет никакого отношения к этому. Если я удаляю префиксы вручную, он импортирует ok. – user116884

3

Вот модифицированная версия таблицы стилей, связанных диво, что полосы только одно пространство имен и копирует остальные дословно:

<xsl:stylesheet version="1.0" xmlns:x="namespace-to-strip" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="no" encoding="UTF-8"/> 

    <xsl:template match="/|comment()|processing-instruction()"> 
    <xsl:copy> 
     <xsl:apply-templates/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="x:*"> 
    <xsl:element name="{local-name()}"> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:element> 
    </xsl:template> 

    <xsl:template match="@x:*"> 
    <xsl:attribute name="{local-name()}"> 
     <xsl:value-of select="."/> 
    </xsl:attribute> 
    </xsl:template> 

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

 Смежные вопросы

  • Нет связанных вопросов^_^