C# EPPlus计算不起作用

C# EPPlus计算不起作用,c#,epplus,C#,Epplus,我用c#和EPPlus来计算一堆总和。我试图将一个公式应用于一行以及一堆单独的单元格。然而,我目前的方法不是计算公式。当我使用value方法时,它只是将值作为字符串发布,并且也不计算 //=SUM(E123+G123+H123+I123) -F123 //=SUMIFS($P$4:$P$1000,$C$4:$C$1000,Q2,$A$4:$A$1000, $R2) string formula = "= 2 *2"; //double f = double.Parse(

我用c#和EPPlus来计算一堆总和。我试图将一个公式应用于一行以及一堆单独的单元格。然而,我目前的方法不是计算公式。当我使用value方法时,它只是将值作为字符串发布,并且也不计算

//=SUM(E123+G123+H123+I123) -F123
//=SUMIFS($P$4:$P$1000,$C$4:$C$1000,Q2,$A$4:$A$1000, $R2)

string formula = "= 2 *2";
            //double f = double.Parse(formula);
       // ws.Cells["q4"].Value = formula;
       ws.Cells["q4"].Formula =formula;
        ws.Cells["q4"].Style.Numberformat.Format = "#,##0";
        ws.Workbook.CalcMode = ExcelCalcMode.Automatic;
        ws.Cells["q4"].Calculate();


        if (ws.Cells["q4"].Value.ToString() != null)
        {
            string test = ws.Cells["q4"].Value.ToString();
            MessageBox.Show("the value :" + test);
        }
        else
        {
            MessageBox.Show("not working" );
        }

我检查了你给的样本,公式是2*2。EPPLus似乎:

string formula = "= 2 *2";
实际上必须是:

string formula = "2 *2";
i、 e没有等号。请参见下面我对您的示例的修改:

//  Just setting up a dummy package here so I can test your example
var pckg = new ExcelPackage();
pckg.Workbook.Worksheets.Add("Test");
var ws = pckg.Workbook.Worksheets.First(w => w.Name == "Test");

//  Now that I have a dummy worksheet, I run your code.
string formula = "2 *2"; //  Note I dropped the equal sign here from your original example
ws.Cells["q4"].Formula = formula;
ws.Cells["q4"].Style.Numberformat.Format = "#,##0";
ws.Workbook.CalcMode = ExcelCalcMode.Automatic;
ws.Cells["q4"].Calculate();

if (ws.Cells["q4"].Value.ToString() != null)
{
    string test = ws.Cells["q4"].Value.ToString();
    MessageBox.Show("the value :" + test); //  test = 4
}
else
{
    MessageBox.Show("not working" );
}

但我认为,如果加载的工作表单元格中有公式,您不必担心等号。

“ws.Workbook.CalcMode=excelcamode.Automatic;”这一行非常重要,对我非常有用