using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(rootObject.fileLocation, true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
foreach (CustomXmlPart customXmlPart in mainPart.CustomXmlParts)
{
bool exists = false;
using (XmlTextReader xReader = new XmlTextReader(customXmlPart.GetStream(FileMode.Open, FileAccess.Read)))
{
XmlDocument xmlDocument = new XmlDocument();
xReader.MoveToContent();
exists = xReader.NamespaceURI.Equals("urn:TTCProperties:namespace");
if (exists)
{
xmlDocument.Load(xReader);
Console.WriteLine("Attribute Name:" + AttribeObject.attributeName);
XmlNodeList n = xmlDocument.GetElementsByTagName(AttribeObject.attributeName);
if (n != null)
{
foreach (XmlNode curr in n)
{
Console.WriteLine(curr.InnerText);
Console.WriteLine("Attribute Value:" + AttribeObject.attributeValue);
curr.InnerText = AttribeObject.attributeValue;
}
}
StreamReader sr = new StreamReader(customXmlPart.GetStream());
Stream stream = customXmlPart.GetStream();
stream.SetLength(0);
using (StreamWriter ts = new StreamWriter(stream))
ts.Write(xmlDocument.InnerXml);
wordDoc.MainDocumentPart.Document.Save(mainPart);
}
}
}
wordDoc.Close();
}
}
Console.WriteLine("Application save start");
Application ap = new Application();
Console.WriteLine("Application save start1");
try
{
Console.WriteLine("Application save start2");
rootObject.fileLocation = rootObject.fileLocation.Replace('/', '\\');
Console.WriteLine("Application save start3");
FileInfo fileobje = new FileInfo(rootObject.fileLocation);
Console.WriteLine("Application save start4");
Console.WriteLine(fileobje.Exists);
Console.WriteLine("Application save start5");
Console.WriteLine(fileobje.LastWriteTime);
Console.WriteLine("Application save start6");
Document doc = ap.Documents.Open(rootObject.fileLocation);
Console.WriteLine("Application save start7");
doc.Activate();
Console.WriteLine("Application save start8");
//doc.RemoveDocumentInformation(WdRemoveDocInfoType.wdRDIAll);
doc.Save();
Console.WriteLine("Application save start9");
ap.Documents.Save();
Console.WriteLine("Application save start10");
//ap.Documents.Save(NoPrompt: true, OriginalFormat: true);
ap.Documents.Close(SaveChanges: false, OriginalFormat: false, RouteDocument: false);
Console.WriteLine("Application save start11");
Console.Write("after save");
Console.WriteLine(fileobje.LastWriteTime);
}
catch (Exception ex)
{
Console.WriteLine("Exception Caught: " + ex.Message); // Could be that the document is already open (/) or Word is in Memory(?)
}
finally
{
// Ambiguity between method 'Microsoft.Office.Interop.Word._Application.Quit(ref object, ref object, ref object)' and non-method 'Microsoft.Office.Interop.Word.ApplicationEvents4_Event.Quit'. Using method group.
// ap.Quit( SaveChanges: false, OriginalFormat: false, RouteDocument: false );
((_Application)ap).Quit(SaveChanges: false, OriginalFormat: false, RouteDocument: false);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ap);
}
предположим, что мы извлекаем файл слов, мы получаем пользовательскую папку xml, у них есть пользовательский файл xml, такой как item1. xml, item2. xml ... наш атрибут находится в этом файле. мы получаем пользовательскую xml деталь, используя mainPart.CustomXmlParts, находим значение нашего тега и обновляем его. так что его успешно обновить в Custompart xml. но то же значение тега есть в документе. xml в папке word,
у нас office2010, мы открываем и сохраняем документ, используя приведенный ниже код. сохраняем документ и обновляем документ. xml file.
но в другой системе у нас есть офис365, мы запускаем тот же код, что и документ, который не обновляется. xml в папке word.
Приложение ap = новое приложение (); Console.WriteLine («Приложение сохраняет start1»); попробуйте {
rootObject.fileLocation = rootObject.fileLocation.Replace('/', '\\');
Console.WriteLine("Application save start3");
FileInfo fileobje = new FileInfo(rootObject.fileLocation);
Document doc = ap.Documents.Open(rootObject.fileLocation);
doc.Activate();
//doc.RemoveDocumentInformation(WdRemoveDocInfoType.wdRDIAll);
doc.Save();
ap.Documents.Save();
Console.WriteLine("Application save start10");
ap.Documents.Close(SaveChanges: false, OriginalFormat: false, RouteDocument: false);
, если вам нужны подробности режима или любой фрагмент кода или данные, пожалуйста, дайте мне знать.