【问题标题】:EPPLus Cell Formula #REFEPPLus 细胞公式#REF
【发布时间】:2015-12-17 03:50:15
【问题描述】:

希望有人能用 EPPLUS 和 Formulas 解决这个问题。 我收到无效的 #REF!当我尝试将公式分配给单元格时,最后一行似乎没有问题地接受公式并且计算正确。

这是公式赋值时的逻辑。我正在引用另一张表中的数据。

        string formula1 = "";
        string formula2 = "";

        int uniqueTimeRow = 14;
        if (uniqueTimes.Rows.Count != 0)
        {
            foreach (DataRow row in uniqueTimes.Rows)
            {
                if (row["ExecutionTime"].ToString() != "")
                {
                    wsSummary.InsertRow(uniqueTimeRow, 1, uniqueTimeRow);
                    wsSummary.SetValue(uniqueTimeRow, 2, row["ExecutionTime"].ToString());

                    formula1 = "SUMIF(DataSummary[Strategy],$B" + uniqueTimeRow.ToString() + ",DataSummary[ExecQty])";
                    formula2 = "SUMIF(DataSummary[Strategy],$B" + uniqueTimeRow.ToString() + ",DataSummary[PrincipalAmount])";

                    wsSummary.Cells[uniqueTimeRow, 3].Formula = formula1;
                    wsSummary.Cells[uniqueTimeRow, 4].Formula = formula2;

                    uniqueTimeRow++;
                }
            }
        }

这是结果 excel 文件的样子。

Table Produced in Excel with the invalid #REF!

这是在最后一个单元格上生成的公式:

=SUMIF(DataSummary[Strategy],$B28,DataSummary[ExecQty])
=SUMIF(DataSummary[Strategy],$B28,DataSummary[PrincipalAmount])

如果我向上复制这两个公式,这就是预期的结果:

=SUMIF(DataSummary[Strategy],$B27,DataSummary[ExecQty])
=SUMIF(DataSummary[Strategy],$B27,DataSummary[PrincipalAmount])

当它有无效的#REF!这就是公式中显示的内容:

=SUMIF(#REF!,$B27,#REF!)

【问题讨论】:

  • 您确定您引用的数据实际上包含可以求和的数据吗?似乎这是现有电子表格的一个问题,并给它一个无效的查找,而不是代码。
  • 是的,有数据,这就是为什么您看到 excel 文件中的最后一行实际上产生了一些东西。如果我从最后一行向上复制公式,它会正确计算。
  • 那么你能告诉我们这两个公式(你的代码生成的第一个)和一个有效的公式(当你复制它时)的区别吗?您确定复制时没有使用 exact 相同的公式(包括行)?
  • 唯一的区别是$B(num) - 这表明最后一行(比如说$B16)是有效的,但$B14 是无效的 - 无论如何我们都帮不上忙没有看到excel文件,因为这个问题完全是关于excel的,与EPPlus无关
  • 如果没有完全相同的数据集/工作表,很难诊断。你能把文件贴在某个地方吗?

标签: c# excel epplus epplus-4


【解决方案1】:

刚刚遇到同样的问题。我让它工作,然后在重构后它坏了。在重构之前(纯属偶然),我一次向上复制一行,这似乎是它正常工作的唯一方法。

为了澄清,您必须复制一行,然后将其粘贴到上面的行上。现在复制该行,并将其粘贴到上面的行:

复制第 10 行,粘贴第 9 行,复制第 9 行,粘贴第 8 行……等等……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多