在Excel中使用C#更改链接的异常

时间:2017-02-15 11:59:09

标签: c# excel excel-interop

作为文件存储迁移项目的一部分,我正在尝试更改某些Excel工作簿中的某些Excel链接以反映新的文件存储位置。

我在VS2017 RC中使用Winforms和C#来开发我打算部署的解决方案。

在我的解决方案中;我在Excel Workbook对象上调用ChangeLink方法并传入旧链接,新链接和Excel链接类型。

        public string ProcessFile(string fileName)
    {
        // Private member variable and placeholder declarations
        missingValue = Type.Missing;

        string oldLink;
        string newLink;
        int splitLocation;
        string stringToFind = "\\Finance";


        //Open the specified Excel Workbook
        Excel.Workbook excelWorkbook;

        StringBuilder resultsOut = new StringBuilder();

        if (MsOfficeHelper.IsPasswordProtected(fileName))
        {
            resultsOut = resultsOut.AppendLine("Password Protected - " + fileName);
        }
        else
        {
            // Open
            excelWorkbook = excelApp.Workbooks.Open(Filename: fileName, UpdateLinks: false);

            Array olinks = excelWorkbook.LinkSources(Excel.XlLink.xlExcelLinks) as Array;
            if (olinks != null)
            {
                if (olinks.Length > 0)
                {
                    resultsOut = resultsOut.AppendLine("Contains Links - " + fileName);
                    foreach (var olink in olinks)
                    {
                        oldLink = olink.ToString();
                        splitLocation = oldLink.IndexOf(stringToFind, 0);

                        newLink = "C:\\SteveTest\\" + oldLink.Substring(splitLocation + 1);

                        resultsOut = resultsOut.AppendLine(oldLink);
                        resultsOut = resultsOut.AppendLine(newLink);

                        try
                        {
                            excelWorkbook.ChangeLink(Name: oldLink, NewName: newLink, Type: Excel.XlLinkType.xlLinkTypeExcelLinks);
                        }
                        catch (Exception whoopsy)
                        {
                            MessageBox.Show(whoopsy.Message);
                            //throw;
                        }
                    }
                }
            }

            excelWorkbook.Close(SaveChanges: false);

        }
        return resultsOut.ToString();


    }

但是,当我执行ChangeLink方法时,我得到以下异常 Exception Message

有谁知道导致异常的原因是什么? 我们非常欢迎您的回应。

0 个答案:

没有答案