1

我正在将我的 C# 项目从 Interop 转移到 Spire。

下面的代码在 Interop 中工作,但在 Spire 中没有:-

互操作:-

当我在整个范围内提供公式“=SUM(F2,G2)”时,它会自动应用于单元格范围,例如:-“=SUM(F3,G3)”对于第三行“=SUM(F4,G4 )" 第 4 行,依此类推:-

下面是一段代码

string formula = string.Format("=SUM(F" + "{0}" + ",G" + "{0}" + ")", 2);
Excel.Range to = xlWorkSheet.Range[xlWorkSheet.Cells[2, cl + 1], xlWorkSheet.Cells[rw, cl + 1]];    
to.Formula = formula;

尖塔:-

但是当我应用相同的代码时,它会将公式硬编码为范围内的“=SUM(F2,G2)”:- 第三行的“=SUM(F2,G2)”“=SUM(F42,G2)”对于第 4 行,依此类推:-

下面是一段代码

string formula = string.Format("=SUM(F" + "{0}" + ",G" + "{0}" + ")", 2);
CellRange to = xlWorkSheet.Range[2, cl + 1, rw, cl + 1];    
to.Formula = Formula;

由于性能问题,我不想遍历范围并将公式单独放入单元格中。

任何帮助深表感谢。

4

1 回答 1

0

你在 Spire 论坛上问过同样的问题,其中一位技术支持工程师已经给你答案了。如果你没看到,我在这里引用它供你参考。

在我们的 Spire.XLS 中,当您为单元格区域设置公式时,该公式是固定的。我们这样做是因为我们需要考虑其他一些场合。我们可以轻松地将属性“公式”更改为您想要的效果,如 Interop,并且迭代可以帮助实现它。但是,如果我们更改它,那些喜欢固定公式的人将无法访问。另一方面,如果我们将其设置为固定公式,想要自动公式的用户可以根据自己的情况进行一些修改。此外,无需担心性能问题,因为您想要的结果也可以通过内部迭代来实现。以下是供您参考的迭代。

 int totalRows= sheet.Rows.Length;
        CellRange to;
        for (int CurrentRow = 1; CurrentRow < totalRows+1; CurrentRow++)
        {
            string formula = string.Format("=SUM(F" + "{0}" + ",G" + "{0}" + ")", CurrentRow);
            to = sheet.Range[CurrentRow,cl+1];
            to.Formula = formula;
        }
于 2017-08-22T02:09:31.297 回答