服务器端文字自动化

本文关键字:自动化 文字 服务器端 | 更新日期: 2023-09-27 18:28:46

我正在为服务器端单词自动化项目寻找使用openxml的替代方案。有人知道还有什么其他方法可以让我操作单词书签和表格吗?

服务器端文字自动化

我目前正在为我的公司开发一个单词自动化项目,我正在使用DocX非常简单和直接的API进行工作。我使用的方法是,每当我需要直接使用XML时,这个API在Paragraph类中有一个名为"XML"的属性,它允许您访问底层的XML目录,这样我就可以使用它了。最棒的是,它不会破坏XML,也不会损坏生成的文档。希望这能有所帮助!

使用DocX的示例代码。。

 XNamespace ns = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
    using(DocX doc = DocX.Load(@"c:'temp'yourdoc.docx"))
    {
         foreach( Paragraph para in doc.Paragraphs )
         {
             if(para.Xml.ToString().Contains("w:Bookmark"))
             {
                 if(para.Xml.Element(ns + "BookmarkStart").Attribute("Name").Value == "yourbookmarkname")
                  {
                          // you got to your bookmark, if you want to change the text..then 
                          para.Xml.Elements(ns + "t").FirstOrDefault().SetValue("Text to replace..");
                  }
             }
         }
    }

专门使用书签的替代API是。。http://simpleooxml.codeplex.com/

关于如何使用此API将文本从bookmarkstart删除到bookmarkend的示例。。

 MemoryStream stream = DocumentReader.Copy(string.Format("{0}''template.docx", TestContext.TestDeploymentDir));
 WordprocessingDocument doc = WordprocessingDocument.Open(stream, true);
 MainDocumentPart mainPart = doc.MainDocumentPart;
 DocumentWriter writer = new DocumentWriter(mainPart);
 //Simply Clears all text between bookmarkstart and end
 writer.PasteText("", "YourBookMarkName");

 //Save to the memory stream, and then to a file
 writer.Save();
 DocumentWriter.StreamToFile(string.Format("{0}''templatetest.docx", GetOutputFolder()), stream);

将word文档从内存流加载到不同的API中。

//Loading a document file into memorystream using SimpleOOXML API
MemoryStream stream = DocumentReader.Copy(@"c'template.docx");
//Opening it from the memory stream as OpenXML document
WordprocessingDocument doc = WordprocessingDocument.Open(stream, true);
//Opening it as DocX document for working with DocX Api
DocX document = DocX.Load(stream);