我尝试使用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中将公式作为数组公式执行,那么一切正常(因此公式不是罪魁祸首)。
知道什么是错的?或者有关如何解决方法的任何想法?
答案 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))");