Экспорт текстового документа asp.net с использованием Microsoft.Office.Interop.Word [duplicate]

!!! ЭТО ЛУЧШЕЕ ОБЪЯСНЕНИЕ В МИРЕ !!!!!

var q = {}
var prototype = {prop: 11}

q.prop // undefined
q.__proto__ = prototype
q.prop // 11

в конструкторах функций javascript engine вызывает это q.__proto__ = prototype автоматически, когда мы пишем new Class, а в __proto__ prop set Class.prototype

function Class(){}
Class.prototype = {prop: 999} // set prototype as we need, before call new

var q = new Class() // q.__proto__ = Class.prototype
q.prop // 999

Наслаждайтесь%)

0
задан John Baum 21 March 2012 в 20:31
поделиться

1 ответ

В настоящее время я делаю проект по разработке проекта автоматизации слова для своей компании, и я использую DocX . Очень простой и простой API для работы. Подход, который я использую, всегда, когда мне нужно напрямую работать с XML, этот API имеет свойство «xml» в классе Paragraph, которое дает вам доступ к основному xml direclty, чтобы я мог работать с ним. Наилучшая часть - это не разбить 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/

Пример того, как удалять текст из закладки на сайт в bookmarkend с помощью этого API ..

 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); 
1
ответ дан Flowerking 20 August 2018 в 20:20
поделиться
  • 1
    Я могу получить доступ к закладкам в слове doc с помощью docX? – John Baum 22 March 2012 в 15:31
  • 2
    не из коробки .. но вы можете получить его из основного xml непосредственно .. в зависимости от вашего требования .. – Flowerking 22 March 2012 в 15:40
  • 3
    можете ли вы привести пример того, как я могу использовать xml для доступа к закладкам – John Baum 22 March 2012 в 15:48
  • 4
    Проверьте отредактированный ответ на пример кода. – Flowerking 22 March 2012 в 16:13
  • 5
    Помогает ли эта api найти закладку и написать текст, непосредственно следуя за ней? Это еще одна из вещей, которые мне нужно выполнить – John Baum 22 March 2012 в 16:38
Другие вопросы по тегам:

Похожие вопросы: