首页 文章

EPPlus没有插入公式正确

提问于
浏览
2

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

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

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

=QUARTILE(C2:C1000,1)

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

=QUARTILE(#REF!,1)

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

2 回答

  • 2

    您可以使用以下代码

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

    斯图尔特是正确的,因为公式应该是有效的 . 尝试粘贴其余代码 . 我一起考虑了一个快速的单元测试,它运行良好:

    [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();
    
        }
    }
    

相关问题