2009-04-08 11 views
5

im derzeit so etwas wie dies mittels Inline-String in einer Zelle einzufügen:Wie Einfügen von Zeilenumbruch in OPENXML-Tabellenkalkulationszelle?

new Cell() 
{ 
    CellReference = "E2", 
    StyleIndex = (UInt32Value)4U, 
    DataType = CellValues.InlineString, 
    InlineString = new InlineString(new Text("some text")) 
} 

Aber \n nicht funktioniert Zeilenumbruch eingefügt werden, wie kann ich das tun?

Dank


Die Antwort

new Cell(
     new CellValue("string \n string") 
     ) 
    { 
     CellReference = "E2", 
     StyleIndex = (UInt32Value)4U, 
     DataType = CellValues.String   
    } 

Antwort

4

Try CellValues.String statt CellValues.InlineString.

8

Sie müssen zwei Dinge tun:

1.) Markieren Sie die Zelle als "Wrapped Text". Sie können dies in der Tabelle von Hand tun, wenn Sie eine vorhandene Tabelle als Vorlage verwenden. Klicken Sie einfach mit der rechten Maustaste auf die Zellen und wählen Sie "Zellen formatieren ..", klicken Sie auf die Registerkarte "Ausrichtung" und markieren Sie das Kontrollkästchen "Wrap Text".
OR ... Sie können das CellFormat programmgesteuert festlegen. Wenn Sie ein CellFormat Objekt aufgerufen haben „cf“, würden Sie so etwas tun:

cf.ApplyAlignment = true;//Set this so that Excel knows to use it. 
if (cf.Alignment == null)//If no pre-existing Alignment, then add it. 
    cf.Alignment = new Alignment() { WrapText = true }; 
Alignment a = cf.Alignment; 
if (a.WrapText == null || a.WrapText.Value == false) 
    a.WrapText = new BooleanValue(true);//Update pre-existing Alignment. 

2.) Sie sollten nicht „\ n“ verwenden, stattdessen sollten Sie die Verwendung werden Standard-Wagenrücklauf- + Zeilenvorschub-Kombination: "\ r \ n"
Wenn Sie die beiden mischen (dh "\ n" ohne die vorangestellten "\ r" und "\ r \ n"), sollte dies behoben werden vor dem Auffüllen des Zellenwerts:

sHeaderText = sHeaderText.Replace("\r\n", "\n").Replace("\n", "\r\n"); 

Ich selbst verwende nicht CellValues.String oder sogar CellValues.InlineString.
Stattdessen baue ich meine Textzellen mit CellValues.SharedString (genau wie Excel).
Für Bool verwende ich "CellValues.Boolean", und für alle anderen (Zahlen und Daten) setze ich die Zelle DataType zu nichts - weil das ist, was Excel tut, wenn ich auf das Markup erstelle es erstellt.

+0

Wie wenden Sie das "CellFormat" -Objekt oder "Alignment" -Objekt auf eine bestimmte Zelle an? – Panzercrisis

+0

Das funktioniert nicht für mich. Ich bekomme nur einen Fehler in der Zeile mit \ r \ n und Excel öffnet das Blatt nicht mit dem Text, dass es beschädigt ist – johnstaveley

Verwandte Themen