我尝试在 excel INDEX和MATCH中使用两个函数,根据EPPlus codeplex,应该支持这些函数。每次我打开文件时,都会有一条警告消息说有东西坏了,并询问我是否要修复文件,当它打开时,所有公式都消失了。修复文档时,会显示一个对话框,说明公式已从/xl/worksheets/sheet1.xml-del
.
我可以将公式手动放入电子表格中并且它们可以工作,但是要在生成的 xlsx 文件中显示任何数据的唯一方法是调用Calculate()
工作表。这将正确输出数据,但我需要的是在文档中包含公式。
这是我尝试过的公式的一个小例子
private byte[] TestingFormula()
{
using (ExcelPackage pck = new ExcelPackage(_helper.GetTemplateStream("TEST.xlsx")))
{
var ws = pck.Workbook.Worksheets[1];
ws.Cells["A4"].Formula = "INDEX($C$1:$D$24;4;2)";
ws.Cells["A6"].Formula = "INDEX(C1:D24;6;2)";
ws.Cells["B26"].Formula = "MATCH($B$12;$C$1:$D$1;0)";
// sum works as expected
//ws.Cells["D25"].Formula = "SUM(D2:D24)";
//pck.Workbook.Calculate();
//pck.Workbook.CalcMode = ExcelCalcMode.Automatic;
return pck.GetAsByteArray();
}
}
TEST.xlsx 只是一个看起来像这样的模板
那么,我在这里做错了什么?