2012-02-11 15 views
17

voglio generare un documento di Word come input devo questa stringa "convenzioni di confezionamento aperta" e ogni parola avrà uno stile diverso il risultato dovrebbe essere aperti imballaggio convenzioninon può conservare lo spazio tra le esecuzioni

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

e il risultato è aperto * imballaggio * convenzioni senza spazio tra le parole qualcuno può aiutarmi per favore ?!

+0

qualcuno può aiutarmi per favore? –

risposta

37

Sei sulla buona strada per gestire la proprietà Space, ma è necessario fare in questo modo:

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

Grazie croccante, questo funziona per me. –

+2

Anche per me. Questo dovrebbe essere contrassegnato come una risposta accettata. – evilfish

7

Ecco un altro modo per impostare l'attributo Spazio che può essere utilizzato per specificare SpaceProcessingMode.

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

Il predefinito dell'attributo è SpaceProcessingModeValues.Default.

Da API Documentation:

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

Anche se ci sono tre spazi su ogni lato del contenuto di testo nella corsa, che gli spazi bianchi non è stato specificatamente contrassegnata come significativo, quindi è soggetta alla conservazione spazio regole attualmente specificate nello scope di quella corsa. fine esempio] I possibili valori per questo attributo sono definiti dal §2.10 della specifica XML 1.0.

Problemi correlati