Я пытаюсь следовать этому учебнику, чтобы создать шаблон документа Word, которым я могу манипулировать с помощью C #. Но я всегда получаю следующую ошибку: «Имя mainPart не существует в текущем контексте открытого XML». Я использую Open Xml 2.0.
Есть идеи, что мне не хватает?
using System;
using System.IO;
using DocumentFormat.OpenXml.Packaging;
....
Console.WriteLine("Starting up Word template updater ...");
//get path to template and instance output
string docTemplatePath = @"C:\Users\user\Desktop\Doc Offices XML\earth.docx";
string docOutputPath = @"C:\Users\user\Desktop\Doc Offices XML\earth_Instance.docx";
//create copy of template so that we don't overwrite it
File.Copy(docTemplatePath, docOutputPath);
Console.WriteLine("Created copy of template ...");
//stand up object that reads the Word doc package
using (WordprocessingDocument doc = WordprocessingDocument.Open(docOutputPath, true))
{
//create XML string matching custom XML part
string newXml = "<root>" +
"<Earth>Outer Space</Earth>" +
"</root>";
MainDocumentPart main = doc.MainDocumentPart;
main.DeleteParts<CustomXmlPart>(main.CustomXmlParts);
//add and write new XML part
//CustomXmlPart customXml = main.AddNewPart<CustomXmlPart>();
CustomXmlPart customXml = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
using (StreamWriter ts = new StreamWriter(customXml.GetStream()))
{
ts.Write(newXml);
}
//closing WordprocessingDocument automatically saves the document
}
Console.WriteLine("Done");
Console.ReadLine();