2009-05-08 5 views
0

Ich versuche, die folgende Zeichenfolge zu einer Zelle in Excel mit den 2003 XML-Funktionen "Käse \ nBread" zu erhalten und im Moment ignoriert den Zeilenumbruch.Excel-XML-Zeilen-Feeds in Felder

Wenn ich eine Datei mit dem gewünschten Effekt dann bekomme ich die folgende Ausgabe

<Cell ss:StyleID="s62"><Data ss:Type="String">Cheese&#10;Monkey</Data></Cell> 

Okay, ich versuche zu tun ...

text.Replace('\n',(char)10); 

oder text.Replace ("\ n "," ");

Ohne Erfolg, die erste tut nichts nützliches und in der zweiten es entkommt einfach der XmlWriter mit einer &, die wirklich hilfreich ist.

Irgendwelche Ideen, vielleicht eine Einstellung auf dem .NET XmlWriter?

Antwort

1

Try xml:space="preserve" auf dem Data Element Einstellung:

<Cell ss:StyleID="s62"><Data ss:Type="String" xml:space="preserve">Cheese 
Monkey</Data></Cell> 
+0

diese hmm auf den zweiten Blick nicht für mich arbeiten (die Worte einfach aufgrund der Spaltengröße gewickelt, Deshalb dachte ich, dass es funktioniert) –

+0

In diesem Fall behandelt Ihre Excel-Version XML nicht korrekt, und Sie müssen möglicherweise den XML-Text nachbearbeiten, zum Beispiel mit einem Regex, oder indem Sie Ihren eigenen XmlTextWriter-Derivat erstellen, der die Zeilenumbrüche ersetzt wenn WriteString aufgerufen wird, während sich der Writer in einem Data-Tag befindet. – Lucero

+0

danke, ich werde das versuchen –

2

ich folgendes meiner XML-Definition hinzuzufügen hatte (innerhalb des "Arbeitsmappe" Element):

<Styles> 
    <Style ss:ID="sMultiLine"> 
    <Alignment ss:Vertical="Bottom" ss:WrapText="1"/> 
    </Style> 
</Styles> 

Und dann, in der "Cell" -Element, fügen Sie den passenden passenden Stil hinzu:

<Cell ss:StyleID="sMultiLine"> 

Ich habe tatsächlich eine kleine XSLT Einstellung, so dass nur dieser Wert nach oben zeigte, wenn sie Zeilenumbrüche im Inhalt festgestellt:

<xsl:if test="contains(.,'#10;')"> 
     <xsl:attribute name="ss:StyleID">sMultiLine</xsl:attribute> 
</xsl:if>