EPPlus没有插入公式正确

时间:2015-05-05 20:02:59

标签: c# excel epplus

我使用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 个答案:

答案 0 :(得分:3)

您可以使用以下代码

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

答案 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();

    }
}