2016-03-20 12 views
1

Wordファイルの生成にNovacode.Docxクラスを使用します。私は方程式を挿入したいが、デフォルトの方法は文字列で方程式を作った。例えばHow i can write sqrt block?ありがとう。Novacode Docx Equation

using System; 
using Novacode; 

namespace Program1 
{ 
    class MyClass 
    { 
     Novacode.DocX Doc; 
     MyClass() 
     { 
     Doc = Novacode.DocX.Create("C:\\1.docx", DocumentTypes.Document); 
     Doc.InsertEquation(""); // <- This method insert string 
     } 
    } 
} 

答えて

1

私は最近、この問題につまずいた、と私が見つけた方法は、DOCXは、この機能を持っていないように見えることから、段落からXMLを編集することでした。

Wordで.docxファイルを作成し、必要な要素で.zipに変更し、word\document.xmlファイルからxmlを読み取りました。たとえば、平方根の場合、C#のコードは次のようになります。

DocX doc = DocX.Create("testeDocument.docx"); 
Paragraph eqParagraph = doc.InsertEquation(""); 
XElement xml = eqParagraph.Xml; 
XNamespace mathNamespace = "http://schemas.openxmlformats.org/officeDocument/2006/math"; 
XElement omath = xml.Descendants(mathNamespace + "oMath").First(); 
omath.Elements().Remove(); 
XElement sqrt= new XElement(mathNamespace + "rad"); 

XElement deg = new XElement(mathNamespace + "deg"); 

XElement radProp = new XElement(mathNamespace + "radPr"); 
XElement degHide = new XElement(mathNamespace + "degHide"); 
degHide.Add(new XAttribute(mathNamespace + "val", 1)); 
radProp.Add(degHide); 
sqrt.Add(radProp); 

sqrt.Add(deg); 

XElement rad = new XElement(mathNamespace + "e"); 
rad.Add(new XElement(mathNamespace + "r", new XElement(mathNamespace + "t", "this goes inside the sqrt"))); 
sqrt.Add(rad); 

omath.Add(sqrt); 
doc.Save(); 
関連する問題