我正在尝试从DOCX文件中删除doc
个变量。这是我正在使用的代码,但它不会删除任何...
这是完整的代码:
class Program
{
static void Main(string[] args)
{
string filePath = "C:\\..\\..sample.docx";
Remove removedocvars = new Remove();
removedocvars.RemoveDocVariables(filePath);
}
}
//method to remove doc vars
public void RemoveDocVariables(string fileName)
{
using (WordprocessingDocument doc = WordprocessingDocument.Open(fileName, true))
{
List<DocumentVariables> DocVarsToDelete = doc.MainDocumentPart.RootElement.Descendants<DocumentVariables>().ToList();
foreach (DocumentVariables dc in DocVarsToDelete)
{
dc.Remove();
}
doc.MainDocumentPart.Document.Save();
}
}
答案 0 :(得分:1)
变量位于settings.xml文件中,因此您必须使用MainDocumentPart.DocumentSettingsPart.Settings.Descendants&lt;&gt;()。
public void RemoveDocVariables(string fileName)
{
using (var doc = WordprocessingDocument.Open(fileName, true))
{
doc.MainDocumentPart.DocumentSettingsPart.Settings.RemoveAllChildren<DocumentVariables>();
}
}
答案 1 :(得分:0)
如果这是您的代码范围,那么您是否错过了对save方法的调用?
类似的东西:
foreach (DocumentVariable dc in DocVarsToDelete)
{
dc.Remove();
}
document.Save();
答案 2 :(得分:0)
这是一个6年前的问题,但我认为添加答案仍然很有价值。您的问题可能与此有关:
https://github.com/OfficeDev/Open-XML-SDK/issues/198
https://github.com/OfficeDev/Open-XML-SDK/issues/222
OpenXML曾经不同于访问机制的混合,直到应用了上述链接中提到的补丁。