如何在使用C#删除和替换工作表时保留公式对工作表的引用?

时间:2013-08-26 12:03:20

标签: c# excel excel-interop

如何在更换纸张后保持配方正常工作? 我的意思是 How to preserve a formula's reference to a worksheet when the worksheet is deleted and replaced? 但在C#

using Excel = Microsoft.Office.Interop.Excel;

 Excel.Application excelApp = new Excel.ApplicationClass();
 Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(connection.DataSource, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
    foreach (Excel.Worksheet sh in excelWorkbook.Sheets)
    {
        if (sh.Name == SheetName || sh.Name == "_"+SheetName)
        {
            sh.Application.DisplayAlerts = false;
            sh.Delete();
        }
    }
    excelWorkbook.Save();
    excelWorkbook.Close(true, excelWorkbook.FullName, null);
    excelApp.Quit();

后来我正在调用具有相同名称的SQL命令“Create Table”。所有公式都不起作用

1 个答案:

答案 0 :(得分:1)

您需要做的是,在包含公式的工作表中,首先将它们从公式转换(当您删除公式引用的工作表时,这将阻止Excel在公式中创建错误)。

因此,例如,执行查找/替换并将“=”替换为“#”(或者您确定在该表中未使用的任何其他字符或字符集)。 Thsi将停止公式创建错误引用。

然后删除工作表,添加新工作表

然后将公式表中的值重新替换为“#”到“=”。

只要您的新工作表与旧工作表的名称相同,您就应该好了。

希望这有帮助。