我使用Novacode.Docx类生成Word文件。我想要插入方程,但默认方法使用字符串制作方程式。例如How i can write 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
}
}
}
答案 0 :(得分:1)
我最近偶然发现了这个问题,我发现的方法是从段落中编辑xml,因为看起来DocX没有这个功能。
为此,我在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();