2015-03-27 17 views
6

yılında Docx stil ekleme, böyle 1 stilini Başlık ile bir paragraf ekleyebilirNovacode en DOCX kullanma Novacode

var p = docX.InsertParagraph("My Heading"); 
p.StyleName = "Title"; 

Oluşturulan Xml dosyalarına baktım ve "Başlık" stilinin Styles.xml dosyasında olmadığını görüyorum, oysa bunu Word'de Başlık stili olarak ayarlar ve kaydedersem, Başlık stili stillerde Xml dosyasında görünür.

Peki, DocX'i Başlık stilini nasıl ekleyebilirim veya DocX stillerine stil ekleme hakkında nasıl giderim?

cevap

1

Bu lib'de uygulanmayan birkaç Stil var. Kaynağa _Enumerations.cs dosyasında bakarsanız, HeadingType adlı bir enum vardır. Bu enumda, Başlıklar ve diğer bazılarının Başlıklardan farklı olduğu için uygulanmadıklarına dair notlar vardır. Not, kendinizi deneyebileceğinize benziyor, ancak bu, projenize dahil edilmek üzere özel bir docx sürümü gerektiriyor.

Yazı tipi özelliklerinin ne olduğunu bulup el ile veya bir yapılandırma dosyasında ayarlamanızı öneririm. Basit bir örnek.

static void AddTitle() 
{ 
    Console.WriteLine("\tAddTitle()"); 
    using (var document = DocX.Create(@"docs\Title.docx")) 
    { 
     var title = document.InsertParagraph("this should be a title"); 
     title.FontSize(28).Font(new FontFamily("Calibri Light")); 
     document.InsertParagraph("title is above!"); 
     document.Save(); 
    } 
} 
0

Benzer bir sorunla karşılaştım. Stilleri bir docx'e manuel olarak ayarlayarak çözdüm (Word'deki STRG + SHIFT + ALT + S ile diyaloğu açın) ve bu docx dosyasını bir şablon olarak kullandım. Bu şekilde, Paragraph.StyleName Özniteliğini ve bağlı stili kullanabilirsiniz.

+0

Benzer bir sorun var ama bir tabloya stil ekleyemiyor gibi görünüyor, herhangi bir fikir? –

2

Bu sorunla da karşılaşıyorum. Docx (zip) dosyasında word \ document.xml ve word \ styles.xml dosyalarını karşılaştırarak. Paragraf.StyleName'in stil adıyla değil, stil kimliği ile atanması gerektiğini gördüm! örneğin

: styles.xml içinde bir stili:

<w:style w:type="paragraph" w:customStyle="1" w:styleId="a9"> 
    <w:name w:val="mystyle" /> 

Sen atamak gerekir "a9" değil "mystyle" Paragraph.StyleName doğru stili alır.

Yardım edin.

1

Aynı soruna girdim.

  1. bir .dotx Kelime şablonu oluşturmak ve (kullanmak istediğiniz stillerde metin/kelime ile stil 'Title' in örneğin Başlık doldurun, içinde Başlık 1: aşağıdaki gibi bunu çözebilir 'tarzı '' içinde Başlık 1' Başlık 1 stili 'Başlık 1', vb vS

  2. , bir Novacode.DocX ​​nesnesi oluşturmak ve bir şablon olarak .dotx geçerlidir:

    static void Main(string[] args) 
        { 
        // Insert a paragrpah: 
        string Title = "Hello World!"; 
        string Header1 = "Countries in Europe"; 
        string Header2 = "Belgium"; 
        string Header3 = "France"; 
        string Para1 = "Belgium, officially the Kingdom of Belgium, is a sovereign state in Western Europe bordered by France, the Netherlands, Germany, Luxembourg, and the North Sea. It is a small, densely populated country which covers an area of 30,528 square kilometres (11,787 sq mi) and has a population of about 11 million people. Straddling the cultural boundary between Germanic and Latin Europe, Belgium is home to two main linguistic groups: the Dutch-speaking, mostly Flemish community, which constitutes about 59% of the population, and the French-speaking, mostly Walloon population, which comprises 41% of all Belgians. Additionally, there is a small group of German-speakers who live in the East Cantons located around the High Fens area, and bordering Germany."; 
        string Para2 = "France, is a country with territory in western Europe and several overseas regions and territories. The European, or metropolitan, area of France extends from the Mediterranean Sea to the English Channel and the North Sea, and from the Rhine to the Atlantic Ocean. Overseas France include French Guiana on the South American continent and several island territories in the Atlantic, Pacific and Indian oceans. France spans 643,801 square kilometres (248,573 sq mi) and had a total population of almost 67 million people as of January 2017. It is a unitary semi-presidential republic with the capital in Paris, the country's largest city and main cultural and commercial centre. Other major urban centres include Marseille[XVI], Lyon, Lille, Nice, Toulouse and Bordeaux."; 
    
        using (MemoryStream docStream = new MemoryStream()) 
        { 
         using (Novacode.DocX doc = Novacode.DocX.Create(docStream, Novacode.DocumentTypes.Document)) 
         { 
          // Build the document 
          // apply template 
          doc.ApplyTemplate(@"C:\tmp\wordTemplate.dotx", false); 
          // insert text with styles 
          doc.InsertParagraph("Hello World", false).StyleName = "Titel"; 
          doc.InsertParagraph(Header1, false).StyleName = "Kop1";//dutch for Heading1 
          doc.InsertParagraph(Header2, false).StyleName = "Kop2";//dutch for Heading2 
          doc.InsertParagraph(Para1, false).StyleName = "Standaard";//dutch for 'Standard', style 'Normal' in an English Word version 
          doc.InsertParagraph(Header3, false).StyleName = "Kop2"; 
          doc.InsertParagraph(Para2, false).StyleName = "Standaard"; 
    
          // Same the doc to MemoryStream 
          doc.SaveAs(@"C:\tmp\ExampleDoc.docx"); 
         } 
    
        } 
    } 
    

Sonuç: Screenshot of my word application

Ancak, yeni sorun: Belgeleri (dutch) ile kullanmak istediğim Word uygulamasının ana dilinde stilleri eklemem gerekiyordu. 'Kop1', 'Heading1', 'Titel', 'Title', vb. 'Dir.' Heading1 'veya' Title 'kullandığımda, bu bir hatayla sonuçlanır. Ancak, .dotx belgesinin denetimindeyseniz, bu çözülebilir bir sorun olabilir ...

İlgili konular