【问题标题】:Foreach loop using Regex to find XML patternForeach 循环使用正则表达式查找 XML 模式
【发布时间】:2016-12-02 20:32:24
【问题描述】:

我创建了一个正则表达式模式,可以在我的 excel 文件中找到所有 #REF。我创建了一个foreach 循环来返回所有#REF 并在控制台中将它们连同它们的计数一起播放。这工作正常。然而,我随后创建了一个foreach 循环来删除所有#REF 引用,但每次运行项目时它只会删除一个。我已经对此进行了调试,并且在 Regex 在 if 语句中找到匹配项后,下次它进入 foreach 时,它会跳过 if 语句,就好像它找不到另一个匹配项一样。我不确定这是为什么

我的代码是休闲的

返回所有#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在哪里?
  • 因为我从一个 excel 文件中获取 #REF,该文件本质上是一个 xml 文档的压缩文件夹

标签: c# excel foreach openxml openxml-sdk


【解决方案1】:

问题的解决方案是我需要在我的名称变量中添加一个ToList。

foreach (var name in names.ToList())
            {

                if (regex.IsMatch(name.InnerText))
                {
                    name.Remove();
                    work.Save();

                }
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多