2017-11-03 1 views
0

Spire를 사용하여 C# 백엔드를 사용하여 Word 문서를 생성하고 있습니다. Word 문서에서 단락으로 생성해야하는 데이터베이스에 문자열로 저장된 여러 HTML 필드가 있습니다. 다음은 내가 루프 내에서 특정 필드를 생성하기 위해 사용하고있는 코드입니다 :spire를 사용하여 단어 문서 생성 중에 html 스타일 덮어 쓰기

<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> 

: 여기

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

inv.solutionResponse을 기본적으로 HTML과 다음 문자열은 샘플입니다 이 필드 중 일부는 위의 예에서 제공된 사용자 정의 스타일을 가지고 있습니다. 어떻게 사용자 정의 서식을 무시하고 이들에 대한 기본 서식을 적용 할 수 있습니까? 저는 주로 글꼴 크기와 가족에 대해 우려하고 있습니다. 나는 다음과 같이 사용자 지정 스타일을 만드는 시도 :

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); 

을하고 위에서 언급 한 단락에 적용 :

solution.ApplyStyle(p1.Name); 

을하지만 생성 된 문서는 여전히 HTML 태그에 지정된 스타일이 포함되어 있습니다.

답변

0

Word에서 단락의 일부에 스타일을 적용한 다음 전체 단락에 다른 스타일을 적용하면 이전 스타일은 변경되지 않습니다. 그렇게하려면 먼저 모든 스타일을 지우고 사용자 정의 스타일을 적용해야합니다. 다음 코드를 시도해보고 작동하는지 확인하십시오.

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

그러나이 방법으로는 기본 서식이 없어도 완전히 제거되지 않습니까? 내가 찾고 있던 것은 특정 스타일 만 덮어 쓸 수있는 방법이었습니다. (늦은 답신을 드려 죄송합니다.) – roshan

+0

예를 들어 테이블이 있거나 텍스트가 강조되어있을 수 있습니다. 그런 변경을 원하지 않습니다. . 내 의도는 글꼴과 크기 만 변경하는 것입니다. 그게 가능하니? – roshan