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

使用C#将公式添加到Excel-使公式显示,c#,.net,excel,excel-formula,C#,.net,Excel,Excel Formula,我想将公式添加到Excel工作表中。 我用公式属性成功地做到了这一点 问题是,当我在Excel中打开工作表时,我可以看到公式是有效的,但我只能在单元格中看到结果。我看不到Excel顶部公式栏中计算的公式 显然,如果我在Excel中输入公式,我可以在单元格中看到结果,在公式栏中看到公式 我的一些代码: for (int i = 0; i < nOfColumns / 3; i++) { Range cells = workSheet.Range[workSheet.Cells[2,

我想将公式添加到Excel工作表中。
我用公式属性成功地做到了这一点

问题是,当我在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))";
}

任何人都知道如何显示公式,当以编程方式添加公式时,

转到工具栏上的“公式”选项卡,然后单击“显示公式”

隐藏公式(通过选中“设置单元格格式”对话框上的“隐藏”复选框)&保护工作表(此后)将导致公式不显示在公式栏中

VBA代码示例

Range("C1").FormulaHidden = True    'set this property to false to make formula visible.
Sheet1.Protect
编辑:以便在公式栏中查看公式

Range("C1").FormulaHidden = False
Sheet1.Unprotect

我认为本地化可能与这种奇怪的行为有关

不久前,在Excel中工作时,我的印象是公式是以本地化语言存储的(我使用的是意大利语),然后在编译时进行转换。这是有道理的,因为本地化常量是电子表格数据的重要部分


很抱歉,我现在没有Excel可用,所以我不能更准确地说,但我认为您可以尝试将电子表格本地化为英语,或者用本地语言设置公式文本。

最后!!!我明白了。此行为是由SaveAs标志引起的。 改变

SaveAs(文件路径,访问模式:XlSaveAsAccessMode.xlExclusive)

SaveAs(文件路径,AccessMode:XlSaveAsAccessMode.xlShared)


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

请张贴一些相关代码。就像你在单元格上设置公式的那一位,用相关代码编辑帖子。10X编写公式后,立即让代码从单元格中检索公式。如果没有问题,那么代码中稍后的内容会覆盖它,可能会使用Paste特殊值Scharles,正如您在更新的帖子中所看到的,我设法成功地检索公式。这是一个简单的代码-与pasteSpecialno无关-显示公式在单元格中显示公式。对公式栏不执行任何操作。在我的例子中,按Show公式没有任何作用。我认为问题在于,通过“添加”一个公式,它可以创建公式,计算公式,并将单元格的值设置为公式的结果。它不会保存生成的公式。还是stuckOk。。。作为测试,尝试在单元格中键入“=1+2”。。。它应该显示“3”作为单元格中的值,但公式栏上怎么说?单元格显示3。公式栏显示=1+2。启用“显示公式”也会使单元格的值=1+2。在这种情况下,它听起来像是在正常工作,不确定您的问题是什么。当我在Excel中手动插入公式时,它会正常工作。当我试图以编程方式在C#中插入公式时,公式没有显示-只是结果,我尝试了你的建议。我用一个不起作用的完整测试代码更新了原来的帖子。
Range("C1").FormulaHidden = False
Sheet1.Unprotect