0
我创建了一个正则表达式模式,在我的excel文件中查找所有#REF
。我创建了一个foreach
循环以返回所有的#REF
,并将它们与控制台一起计数。这工作正常。然而,我然后创建了一个foreach
循环来删除所有#REF
引用,但它只在每次运行项目时删除一个。我已经调试过了,在Regex在if语句中找到一次匹配之后,下次进入foreach时,它会跳过if语句,就好像它找不到其他匹配一样。我不知道这是为什么使用正则表达式查找XML模式的Foreach循环
我的代码休耕
代码返回所有#REF值
using (var spreadsheet = DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(@"C:\Users\Craig\Desktop\newTest.xlsx", true))
{
var workbook = spreadsheet.WorkbookPart;
Workbook w = new Workbook();
var names = workbook.Workbook.DefinedNames;
var work = workbook.Workbook;
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();
work.Save();
}
}
Console.WriteLine(count);
Console.ReadKey();
}
这里的xml在哪里? – mybirthname
因为我从一个基本上是xml文档的压缩文件夹的excel文件中获得#REF –