EPPLUS中的数组公式

时间:2016-02-01 06:50:25

标签: c# .net excel epplus

我尝试使用EPPlus生成excel文件,该文件包含满足条件的公式求和元素。如果正确阅读文档,最新版本(我使用Nuget安装的EPPlus 4.0.5)应该支持这样的公式。

这是一个简短的例子

var pck = new ExcelPackage (fileinfo);
var sheet = pck.Workbook.Worksheets.Add ("My sheet");

sheet.Cells [1, 1, 1, 5].Value = 1;
sheet.Cells [1, 6, 1, 10].Value = 0;

sheet.Cells [2, 1, 2, 10].Value = 1;

//sheet.Cells [3, 1].Value = "=SUM(IF(A1:J1>0;A2:J2))";
sheet.Cells [3, 1].CreateArrayFormula ("SUM(IF(A1:J1>0;A2:J2))");

pck.Save ();
pck.Dispose ();

当我用Excel打开文件时,Excel要求修复文件(并且只清空包含数组公式的单元格)。

如果我只设置值并在Excel中将公式作为数组公式执行,那么一切正常(因此公式不是罪魁祸首)。

知道什么是错的?或者有关如何解决方法的任何想法?

2 个答案:

答案 0 :(得分:0)

确定。公式是罪魁祸首。从来没有把这一切视为理所当然。

看来文件内部使用的输入格式和格式不同。

sheet.Cells [3, 1].CreateArrayFormula ("SUM(IF(A1:J1>0;A2:J2))");

不起作用,但

sheet.Cells [3, 1].CreateArrayFormula ("SUM(IF(A1:J1>0,A2:J2))");

(注意逗号与分号)

在我的电脑上,我需要用分号编码公式,而不是逗号。

答案 1 :(得分:0)

试试这个。

sheet.Cells [3, 1].CreateArrayFormula ("IF(SUM(A1:J1)>0,SUM(A2:J2))");