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

我想将公式添加到Excel工作表。
我设法使用Formula属性来做到这一点。

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

显然,如果我在Excel本身中input公式,我可以在公式栏中看到单元格和公式中的结果。

我的一些代码:

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))"; } 

下面是一个testing代码。 即使在我保存工作簿后,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; } } } 

任何人都知道如何编程公式编程方式添加公式

终于!!! 弄清楚了。 此行为是由SaveAs标志引起的。 变

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

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

现在唯一剩下的就是了解这两个标志之间究竟有什么不同。 🙂

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

示例VBA代码

 Range("C1").FormulaHidden = True 'set this property to false to make formula visible. Sheet1.Protect 

编辑:为了看到公式栏中的公式

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

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

在这里输入图像说明

我认为本地化可能会涉及这种奇怪的行为。

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

对不起,我现在还没有Excel可用,所以我不能更精确,但我认为你可以尝试本地化您的电子表格中的英文,或用本地语言设置公式文本。