1

Word ファイルの生成には Novacode.Docx クラスを使用します。数式を挿入したいのですが、デフォルトのメソッドは文字列で数式を作成しました。たとえば、sqrt block をどのように書くことができますか? ありがとう。

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
      }
   }
}
4

1 に答える 1

1

最近この問題に出くわしましたが、DocX にはこの機能がないように見えるため、段落から xml を編集する方法を見つけました。

そのために、必要な要素を含む .docx ファイルを Word で作成し、拡張子を .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();
于 2017-06-14T15:19:34.900 に答える