私はopenXMLを使用していますが、特定のパターンと一致するものがあるかどうかを調べるためにExcelファイルをループしています。私のRegexパターンは、落ち着いている@"(?<!\w)#\w+"
です。これは "#
"で始まるものを返します。 「#
」で始まるいくつかの定義済みの名前があり、Excelブックのxmlに<definedName name="_KEY" hidden="1" localSheetId="3">#REF!</definedName>
などあります。しかし、定義された名前を見つけようとすると、私のカウントはゼロに戻ります。私は、ファイルを参照し、ファイルを選択し特定のパターンを見つけるためにforeachを使ってループする正規表現
まず休閑として
私のコードです。私はこれが完全に機能することを確認しました。
それから、試合ごとに試して試してみてください。ここで私の問題がどこにあるのですか?私は私のforeach
ループを台無しにしていると仮定し、私は本当にいくつかの指導が必要です。
var spreadsheet = DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(filePath, false);
var workbook = spreadsheet.WorkbookPart;
var names = workbook.Workbook.DefinedNames;
//result.InactiveNamedRangeCount = names.Where(n => n.InnerText.Contains(pattern)).Count();
foreach (Match match in Regex.Matches(names.ToString(), @"(?<!\w)#\w+"))
{
result.InactiveNamedRangeCount = names.Where(n => n.InnerText.Contains(match.ToString())).Count();
}
。正しいツールを使用してください。 System.XmlライブラリまたはSystem.Xml.Linqライブラリを使用できます。 – jdweng