Моя цель - удалить все "#REF"
из файла excel в workbook.xml. В настоящее время я могу найти все ссылки «#REF» во всей моей книге, но я не уверен, как их удалить из файла.Удалите определенное имя или неработающую ссылку в excel, используя C#
Мой код в залежи
Этот фрагмент кода находит все "#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 (var name in names)
{
if (regex.IsMatch(name.InnerText))
{
name.Remove();
Console.WriteLine(name.InnerText);
Console.WriteLine(count);
}
}
Действительно ли вы сохраняете 'SpreadsheetDocument' после того, как вы их удалили? –
@CharlesMager Я использую ссылку OpenXml, есть ли у вас какие-либо идеи о том, как бы я ее сохранил, используя это? –
. ['Сохранить'] (https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.workbook.save (v = office.14) .aspx) метод в' Workbook' будет мое предположение. Вам также придется изменить способ открытия, поскольку вы передали 'false' для' isEditable'. –