0
私のExcelファイル内にすべて#REF
という正規表現パターンが作成されました。私はforeach
ループを作成して、すべて#REF
を返し、それらを数えてコンソールに表示します。これは正常に動作します。しかし、私はforeach
ループを作成して#REF
の参照をすべて削除しましたが、プロジェクトを実行するたびに1つだけ削除します。私はこれをデバッグした後、Regexが一度if文で一致を見つけると、次回foreachに入るときに別の一致が見つからないかのようにif文をスキップします。私は、これはRegexを使って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文書のzipフォルダであるExcelファイル内から#REFを取得しているので –