我的目標是從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'。 –