我的目标是从workbook.xml中的excel文件中删除所有"#REF"
。我目前能做的是在整个工作簿中查找所有“#REF”参考,但我不知道如何从文件中删除它们。使用C#在Excel中删除已定义的名称或已损坏的引用
我的代码休耕
这段代码中找出所有"#REF"
文件中
var spreadsheet = DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(@"C:\Users\Craig\Desktop\newTest.xlsx", false);
var workbook = spreadsheet.WorkbookPart;
var names = workbook.Workbook.DefinedNames;
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"#REF");
int count= result.InactiveNamedRangeCount = names.Count(n => regex.IsMatch(n.InnerText));
Console.WriteLine(count);
foreach (var name in names)
{
if (regex.IsMatch(name.InnerText))
{
Console.WriteLine(name.InnerText);
}
}
在这里,我试图去尽管每个#REF
使用foreach来删除它,但它不删除他们中的任何一个,我不知道为什么。
foreach (var name in names)
{
if (regex.IsMatch(name.InnerText))
{
name.Remove();
Console.WriteLine(name.InnerText);
Console.WriteLine(count);
}
}
您是否在删除'SpreadsheetDocument'后保存了'SpreadsheetDocument'? –
@CharlesMager我使用OpenXml参考你有任何想法如何使用它保存它? –
'Workbook'上的['Save'](https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.workbook.save(v = office.14).aspx)方法是我猜。你还必须改变你打开它的方式,因为你已经为'isEditable'传递了'false'。 –