2012-02-11 7 views
17

я хочу, чтобы создать текстовый документ в качестве вклада у меня есть эта строка «открытые конвенции упаковки» и каждое слово будет иметь другой стиль результат должен быть открытой упаковки конвенциине может сохранить пространство между запусками

WordprocessingDocument document = WordprocessingDocument.Create(
      @"C:\test PFE.docx", 
      WordprocessingDocumentType.Document 
     ); 



     MainDocumentPart mainDocumentPart = document.AddMainDocumentPart(); 


     mainDocumentPart.Document = new Document(); 
     mainDocumentPart.Document.AddNamespaceDeclaration("ve", "http://schemas.openxmlformats.org/markup-compatibility/2006"); 
     mainDocumentPart.Document.AddNamespaceDeclaration("o", "urn:schemas-microsoft-com:office:office"); 
     mainDocumentPart.Document.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships"); 
     mainDocumentPart.Document.AddNamespaceDeclaration("m", "http://schemas.openxmlformats.org/officeDocument/2006/math"); 
     mainDocumentPart.Document.AddNamespaceDeclaration("v", "urn:schemas-microsoft-com:vml"); 
     mainDocumentPart.Document.AddNamespaceDeclaration("wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"); 
     mainDocumentPart.Document.AddNamespaceDeclaration("w10", "urn:schemas-microsoft-com:office:word"); 
     mainDocumentPart.Document.AddNamespaceDeclaration("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main"); 
     mainDocumentPart.Document.AddNamespaceDeclaration("wne", "http://schemas.microsoft.com/office/word/2006/wordml"); 



     Body documentBody = new Body(); 
     mainDocumentPart.Document.Append(documentBody); 


     StyleDefinitionsPart styleDefinitionsPart = 
     mainDocumentPart.AddNewPart<StyleDefinitionsPart>(); 


     FileStream stylesTemplate = 
      new FileStream("styles.xml", FileMode.Open, FileAccess.Read); 
     styleDefinitionsPart.FeedData(stylesTemplate); 
     styleDefinitionsPart.Styles.Save(); 



     #region Titre du document 


     Paragraph titleParagraphe = new Paragraph() { RsidParagraphAddition = "00AF4948", RsidParagraphProperties = "00625634", RsidRunAdditionDefault = "00625634" }; ; 

     Run run = new Run(); 
     RunProperties rpr = new RunProperties(); 
     RunStyle rstylr = new RunStyle { Val = "style1" }; 
     run.Append(rpr); 
     Text t = new Text("open"); 
     run.Append(t); 
     titleParagraphe.Append(run); 

     run = new Run(); 
     rpr = new RunProperties(); 
     rstylr = new RunStyle { Val = "style2" }; 
     run.Append(rpr); 
     t = new Text("packaging") 
     { 
      Space = new DocumentFormat.OpenXml.EnumValue<DocumentFormat.OpenXml.SpaceProcessingModeValues> { InnerText = "preserve" } 
     }; 
     run.Append(t); 
     titleParagraphe.Append(run); 

     run = new Run(); 
     rpr = new RunProperties(); 
     rstylr = new RunStyle { Val = "style1" }; 
     run.Append(rpr); 
     t = new Text("conventions") 
     { 
      Space = new DocumentFormat.OpenXml.EnumValue<DocumentFormat.OpenXml.SpaceProcessingModeValues> { InnerText = "preserve" } 
     }; 
     run.Append(t); 
     titleParagraphe.Append(run); 


     documentBody.Append(titleParagraphe); 


     document.MainDocumentPart.Document.Save(); 
     document.Dispose(); 

и результат открытых * упаковки * конвенции без пробелов между словами может кто-нибудь помочь мне, пожалуйста ?!

+0

Может мне кто-то помочь? –

ответ

37

Вы находитесь на хорошем пути по обработке Space собственности, но вы должны сделать это так:

t = new Text() 
{ 
    Text = "your text with spaces ", 
    Space = SpaceProcessingModeValues.Preserve 
}; 
+0

Спасибо, cruster, это работает для меня. –

+2

Также для меня. Это должно быть отмечено как принятый ответ. – evilfish

7

Вот еще один способ задать атрибут Space, который может быть использован для указания SpaceProcessingMode.

t = new Text("This is some text"); 
t.Space = SpaceProcessingModeValues.Preserve; 

по умолчанию атрибута является SpaceProcessingModeValues.Default.

От API Documentation:

<w:r> 
<w:t> significant whitespace </w:t> 
</w:r> 

Хотя есть три места на каждой стороне текстового контента в перспективе, что пробелы не были специально отмечены как значительные, поэтому при условии сохранения пространства правил, которые в настоящее время указаны в области выполнения. end example] Возможные значения для этого атрибута определены в § 2.2 формулы XML 1.0.

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

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