繁体   English   中英

使用C#在excel中删除定义的名称或损坏的引用

[英]Remove a defined name or broken reference in excel using C#

我的目的是从workbook.xml中的excel文件中删除所有"#REF" 我现在可以做的是在工作簿中找到所有“ #REF”引用,但是我不确定如何从文件中删除它们。

我的代码是休假的

这段代码查找文件中的所有"#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删除它,但它不会删除其中的任何一个,而且我不确定为什么。

foreach (var name in names)
        {
            if (regex.IsMatch(name.InnerText))
            {
                name.Remove();
                Console.WriteLine(name.InnerText);
                Console.WriteLine(count);
            }
        }

您可能想看看文档以及此方法 文档 ,因为大多数方法都适用于此。

首先,当您打开SpreadsheetDocument ,第二个参数应该为true

第二个参数为true或false,表示您是否要打开文件进行编辑。 如果此参数为false,将不会保存对文档所做的任何更改。

其次,删除名称后,需要调用“ SaveWorkbook ”。

第三, SpreadsheetDocument实现IDisposable 您应该using语句包装它,以确保完成后将其丢弃。 这将确保清除更改并关闭文件流。 文档中 ,处理:

刷新并保存内容,关闭文档,并释放所有资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM