2017-11-03 3 views
0

Ich verwende Spire, um Word-Dokument mit C# -Backend zu generieren. Ich habe mehrere HTML-Felder als String in einer Datenbank gespeichert, die ich in einem Word-Dokument als Absätze generieren muss. Im Folgenden ist der Code, den ich die bestimmten Felder innerhalb einer Schleife zu erzeugen, verwenden:Überschreiben Sie HTML-Stil während Word-Dokument-Generierung mit Hilfe von Spire

Spire.Doc.Documents.Paragraph solution = section.AddParagraph();         
solution.AppendHTML(inv.solutionResponse); 

inv.solutionResponse hier ist eine Zeichenfolge, die im Grunde HTML und folgen ein Beispiel:

<p><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif; mso-fareast-font-family:Calibri;mso-bidi-font-family:Calibri;background:yellow; mso-ansi-language:EN-AU;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA">ABCD</span><br></p><p>Some other text</p> 

Einige dieser Felder haben benutzerdefinierte Stile wie im obigen Beispiel. Wie kann ich die benutzerdefinierte Formatierung überschreiben und eine Standardformatierung für diese anwenden? Ich bin hauptsächlich besorgt über die Schriftgröße und Familie. Ich habe versucht, einen benutzerdefinierten Stil zu schaffen, wie folgt:

p1 = new ParagraphStyle(doc); 
p1.Name = "StylePara1"; 
p1.CharacterFormat.TextColor = Color.Black; 
p1.CharacterFormat.FontSize = 12; 
p1.CharacterFormat.FontName = "Arial Narrow"; 
doc.Styles.Add(p1); 

und wendete sie dann auf den Absatz oben erwähnt:

solution.ApplyStyle(p1.Name); 

Aber das erzeugte Dokument enthält noch den Stil in den HTML-Tags angegeben.

Antwort

0

Wenn Sie in Word einen Stil auf einen Teil eines Absatzes anwenden und dann einen anderen Stil auf den gesamten Absatz anwenden, wird der vorherige Stil nicht geändert. Um dies zu tun, müssen Sie zunächst alle Stile löschen und dann den benutzerdefinierten Stil anwenden. Versuchen Sie den folgenden Code und sehen, ob es funktioniert:

Document doc = new Document(); 
    Section sec = doc.AddSection(); 
    Paragraph para = sec.AddParagraph(); 
    string s = "<p><span style=\"font-size:11.0pt; font-family:Calibri;\">ABCD</span><br></p><p>Some other text</p> "; 
    para.AppendHTML(s); 

    foreach (var item in para.Items) 
    { 
     if(item is TextRange) 
     { 
     TextRange tr = item as TextRange; 
     tr.CharacterFormat.ClearFormatting(); 
     } 
    } 
    ParagraphStyle p1 = new ParagraphStyle(doc); 
    p1.Name = "StylePara1"; 
    p1.CharacterFormat.TextColor = Color.Red; 
    p1.CharacterFormat.FontSize = 50; 
    p1.CharacterFormat.FontName = "Arial Narrow"; 
    doc.Styles.Add(p1); 
    para.ApplyStyle(p1.Name); 

    doc.SaveToFile(fp.ResultPath + "AppendHtmlSegment.docx", FileFormat.Docx); 
+0

Aber würde diese Methode nicht vollständig entfernen, was Standardformatierung vorhanden war? Was ich suchte, war eine mögliche Methode, um nur die spezifischen Stile außer Kraft zu setzen, die ich anwende (Entschuldigung für die späte Antwort) – roshan

+0

Sagen Sie zum Beispiel, dass ich einige Tabellen oder bestimmten markierten Text usw. haben kann. Ich will keine Änderungen an denen . Meine Absicht ist, nur die Schriftart und -größe zu ändern. Ist das möglich? – roshan

Verwandte Themen