tipos son power los las formatos extensiones cuales ms-word openxml

ms-word - son - extensiones de word 2016



¿Utiliza Open XML para leer documentos de Word ya abiertos? (2)

El complemento de Word junto con Open Xml SDK parece cumplir con sus requisitos. Puede encontrar una muestra @ http://blogs.msdn.com/b/atverma/archive/2012/01/11/utility-to-generate-word-documents-from-templates-using-visual-studio-2010- and-open-xml-2-0-sdk-part-3.aspx

Todos los ejemplos e implementaciones que he visto emplean algún tipo de código como:

//filePath is some path to a docx file using (WordprocessingDocument wpd = WordprocessingDocument.Open(filePath, true)) { //Do stuff here }

que requiere que su archivo sea cerrado. Quiero poder usar las operaciones de Open XML SDK en un documento ya abierto porque querré hacer cosas mientras el usuario está mirando activamente el documento, y no necesariamente quiero guardarlo.

es posible? Me doy cuenta de que Word probablemente bloquee el documento si está abierto, por lo que no puede abrir el archivo (incluso para solo lectura). ¿Hay alguna manera de evitarlo?

Sería realmente bueno si pudiera usar de alguna manera el Open XML SDK en documentos ya abiertos. Una idea que he tenido es guardar temporalmente el archivo ya abierto y ejecutar las cosas de OpenXML en el archivo temporal y de alguna manera conciliar eso con el documento existente usando la API de Office. No he pensado en este enfoque, pero no es la manera ideal en la que me gustaría hacerlo.

También sé de una propiedad en la API de Word que devuelve una cadena XML haciendo Word.Range.XML . Sin embargo, no estoy seguro de cómo cargar este valor de cadena al SDK para que pueda aprovechar sus métodos para ayudarme.


Puede abrir el documento de Word Open XML SDK con el archivo ya abierto por la oficina. Debería abrir un FileStream al principio y luego abrir un documento de Word que especifique esta secuencia. Aquí hay un ejemplo:

using (Stream stream = new FileStream(file,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)) { using (WordprocessingDocument wpd = WordprocessingDocument.Open(stream, false)) { .... } }