【问题标题】:EPPlus not Inserting Formula CorrectyEPPlus 没有正确插入公式
【发布时间】:2015-05-05 20:02:59
【问题描述】:

我正在使用 EPPlus 来操作 Excel 文件。我需要插入一个引用整列的公式。我目前正在使用:

currentWorksheet.Cells[2, 4].Formula = "QUARTILE(C:C,1)";

如果我手动将此公式输入到 Excel 工作表中,它可以工作,或者如果我在 EPPlus 中以有限范围插入它,如下所示:

=QUARTILE(C2:C1000,1)

但是,当它使用 EPPlus 作为 C:C 的整个列范围插入时,会导致以下结果:

=QUARTILE(#REF!,1)

在引用整个列时是否需要一些特别的东西,或者这只是 EPPlus 中的一个错误?

【问题讨论】:

  • 我无法重新创建 - 当我在新工作簿中执行此操作时,公式是正确的。粘贴上面的确切公式。合并或删除单元格是否有一些奇怪之处?也许如果输出的电子表格不包含敏感信息,您可以将其发布到某个地方?

标签: c# excel epplus


【解决方案1】:

您可以使用以下代码

worksheet.Cells["A1"].Formula= "=QUARTILE(C2:C1000,1)";

【讨论】:

    【解决方案2】:

    斯图尔特是正确的,因为公式应该是有效的。尝试粘贴其余代码。我一起想了一个快速的单元测试,它工作得很好:

    [TestMethod]
    public void Quartile_Range_Test()
    {
        //Throw in some data
        var dtMain = new DataTable("tblData");
        dtMain.Columns.Add(new DataColumn("Col1", typeof(int)));
    
        for (var i = 0; i < 20; i++)
        {
            var row = dtMain.NewRow();
            row["Col1"] = i * 100;
            dtMain.Rows.Add(row);
        }
    
        //Clear the file
        var newFile = new FileInfo(@"C:\Temp\Temp.xlsx");
        if (newFile.Exists)
            newFile.Delete();
    
        using (var package = new ExcelPackage(newFile))
        {
            var currentWorksheet = package.Workbook.Worksheets.Add("Test");
            currentWorksheet.Cells["C1"].LoadFromDataTable(dtMain, false);
            currentWorksheet.Cells[2, 4].Formula = "QUARTILE(C:C,1)";
    
            package.Save();
    
        }
    }
    

    【讨论】:

    • 这不是在回答问题。当然,等待 OP 澄清问题所在比验证您无法重新创建它并将其作为答案发布更好吗?
    • @Stewart_R - 说真的,投反对票?如果没有人可以重现该问题(到目前为止没有其他响应),他们会粘贴一个工作示例,以便 OP 进行比较。我们不能将上面的代码粘贴到评论中,因为它太长了。所以,我们唯一的选择是一个完整的答案。这可以帮助其他人。哇
    • 我认为我的评论是有效的(答案应该是答案,不是吗?确认您无法重新创建 OPs 问题的单元测试不会增加任何价值恕我直言)。我对匿名投票的有效性没有任何评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多