使用c#删除excel中的公式链接

时间:2016-10-13 21:13:45

标签: c# excel

我正在将工作表从book1复制到book2。该工作表包含具有公式的单元格。在工作表' sheet1'在book2中,单元格包含一个返回book1.sheet1 ='Y:\temp\\[book1.xls]sheet1'!A1

的链接

我的问题是如何删除Y:\temp\\[book1.xls]sheet1并且只有sheet1!A1?基本上将book2作为源。

我试过了:

        for (int i = 2; i <= numberOfSheets; i++)
        {

            Worksheet ws = (Worksheet)wbDestination.Sheets[i];

            Range r = (Range)ws.UsedRange;
            bool success = (bool)r.Replace(
                @"'Y:\temp\[book1.xls]sheet1'",
                "Sheet1",
                XlLookAt.xlWhole,
                XlSearchOrder.xlByRows,
                false, m, m, m);
        }

这不起作用,并收到excel无法找到任何匹配的消息。

2 个答案:

答案 0 :(得分:0)

尝试逐字字符串:

@"'Y:\temp\[book1.xls]sheet1'"

而不是

"'Y:\temp\[book1.xls]sheet1'"

在逐字字符串中,所有这些特殊字符都按字面解释。

答案 1 :(得分:0)

我根据自己的需要解决了这个问题。我希望它可以帮助别人。我使用了以下代码。

        Array links = wbOut.LinkSources(Microsoft.Office.Interop.Excel.XlLink.xlExcelLinks) as Array;
        if (links != null)
        {
            for (int i = 1; i <= links.Length; i++)
            {

                wbOut.ChangeLink(@"c:\temp\book1.xls", @"c:\temp\book2.xls", 
                       XlLinkType.xlLinkTypeExcelLinks);

            }
        }