使用C#将公式添加到Excel - 显示公式

Ami*_*ico 9 .net c# excel excel-formula

我想将公式添加到Excel工作表.
我设法使用Formula属性.

问题是,当我在Excel中打开工作表时,我可以看到该公式有效 - 但我只能在单元格中看到结果.我看不到在Excel顶部的公式栏中计算的公式.

显然,如果我在Excel中输入一个公式,我可以看到单元格中的结果和公式栏中的公式.

我的一些代码:

for (int i = 0; i < nOfColumns / 3; i++)
{
    Range cells = workSheet.Range[workSheet.Cells[2, i * 3 + 3], workSheet.Cells[lastRowNumber, i * 3 + 3]];
    cells.FormulaR1C1 = "=IF(EXACT(RC[-2],RC[-1]),TRUE,ABS(RC[-2]/RC[-1]-1))";
}
Run Code Online (Sandbox Code Playgroud)

下面是测试代码.即使在我保存工作簿之后 - FormulaHidden也是假的,我可以成功检索出来的公式.真的很沮丧

        Microsoft.Office.Interop.Excel.Application excelApp = null;
        Workbooks workBooks = null;
        Workbook workBook = null;
        Worksheet workSheet;

        try
        {

            excelApp = new Microsoft.Office.Interop.Excel.Application();
            excelApp.DisplayAlerts = false;

            workBooks = excelApp.Workbooks;
            workBook = workBooks.Open(filePath, AddToMru: false);
            workSheet = workBook.Worksheets.get_Item(1);

            int nOfColumns = workSheet.UsedRange.Columns.Count;
            int lastRowNumber = workSheet.UsedRange.Rows.Count;

            Range rng = workSheet.Range["C1"];
            rng.Formula = "=SUM(B2:B4)";
            String formula = rng.Formula; //retrieve the formula successfully

            rng.FormulaHidden = false;
            workSheet.Unprotect();

            workBook.SaveAs(filePath, AccessMode: XlSaveAsAccessMode.xlExclusive);

            formula = rng.Formula;  //retrieve the formula successfully
            bool hidden = rng.FormulaHidden;

        }
        catch (Exception e)
        {
            throw;
        }
        finally
        {
            if (workBook != null)
            {
                workBook.Close();
                workBook = null;
            }
            if (workBooks != null)
            {
                workBooks.Close();
                workBooks = null;
            }
            if (excelApp != null)
            {
                excelApp.Quit();
                excelApp = null;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在以编程方式添加公式时,是否有人知道如何显示公式

Ami*_*ico 3

最后 !!!弄清楚了。此行为是由 SaveAs 标志引起的。改变了

workBook.SaveAs(filePath, AccessMode: XlSaveAsAccessMode.xlExclusive);

workBook.SaveAs(filePath, AccessMode: XlSaveAsAccessMode.xlShared);

现在唯一剩下的就是了解这两个标志之间到底有什么不同。:)