2016-04-13 70 views
0

C# kullanarak WinForms bir kelime belge için bir veritabanından veri ihraç ediyorumBelge Bölümleri

çıkan belge nedeniyle kullanmanın 5 Bölümler vardır:

Ne ben bilmek istiyorum nasıl olduğunu
Range.InsertBreak(WdBreakType.wdSectionBreakNextPage); 

i tek tek her bölümüne bakın - bu yüzden yerine bunu yapmanın, her bölüm için farklı bir üstbilgi ayarlayabilirsiniz: Bu "İşte bazı Başlık"her başlığı koyar Çünkü

foreach (Section section in aDoc.Sections) 
      { 
       //Get the header range and add the header details. 
       var headerRange = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; 
       headerRange.Fields.Add(headerRange, WdFieldType.wdFieldPage); 
       headerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft; 
       headerRange.Font.ColorIndex = WdColorIndex.wdBlack; 
       headerRange.Font.Size = 14; 
       headerRange.Font.Name = "Arial"; 
       headerRange.Font.Bold = 1; 
       headerRange.Text = Some Header Here; 
       headerRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; 
      } 

cevap

1

, yeni bölümler bir Word belgesinde zaman üretilir, mülkiyet LinkToPrevious true olarak ayarlanır yazabilir. Bu, yeni bölümün önceki bölümün üstbilgi ve altbilgisini "devraldığı" anlamına gelir.

Her bölümde farklı üstbilgi/altbilgi içeriği olması için, LinkToPrevious değerini False olarak ayarlamak gerekir. Bu bölümleri oluştururken veya bundan sonra herhangi bir zamanda yapılabilir, ancak önce yapılmalıdır, bir üstbilgi/altbilgiye içerik yazarsınız. Bağlantı,'dan sonra koptuğu takdirde, üstbilgi/altbilgi içerik içeriyorsa, bu içerik kaybolur (ancak bölümün bağlı olduğu üst "üstbilgi/altbilgide kalır).

nedenle, bir kişisel Bölüm hitap bağlantısını kaldırmak ve olabildiğince onun üstbilgisi'adlı içeriğini yazmak için:

Word.Section sec = doc.Sections[indexValue] 
Word.HeaderFooter hf = sec.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary]; 
hf.LinkToPrevious = false; 
hf.Range.Text = "Content for this header"; 

Not: Onları farklı vermek için bir Listesine bölümleri yazmaya gerek yoktur içeriği.

+0

Cevabınız için teşekkürler, yarın PC'de olduğumda yarın deneyeceğim :) – Krono

0

Sections özelliği, yalnızca türlenmemiş bir IEnumerable olduğundan, bölümlerin yazılı bir listesini yapmak için aşağıdakileri yapabilirsiniz. Bunun çalışması için System.Linq ve System.Collections.Generic ad alanlarını almanız gerektiğine dikkat edin. Belirli bölümün başlığı ayarlamak gerekiyorsa

List<Section> sections = new List<Section>(aDoc.Sections.Cast<Sections>()); 

Şimdi, varsayılan olarak

Section section1 = sections[0]; 
var section1HeaderRange = section1.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; 
section1HeaderRange.Text = "Section 1 Header"; 

Section section2 = sections[1]; 
var section2HeaderRange = section2.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; 
section2HeaderRange.Text = "Section 2 Header"; 
+0

Cevabınız için teşekkürler! - Şu anda bir bilgisayar başında değilim ve birkaç günlüğüne olamayacağım. Yaptığım zaman güncelleme yapacağım :) – Krono