【问题标题】:Array formula in EPPLUSEPPLUS 中的数组公式
【发布时间】:2016-04-09 22:28:52
【问题描述】:

如果满足条件,我正在尝试使用 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 中设置值并将公式作为数组公式执行,一切正常(所以公式不是罪魁祸首)。

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

【问题讨论】:

    标签: c# .net excel epplus


    【解决方案1】:

    好的。公式是罪魁祸首。从来没有什么是理所当然的。

    文件内部使用的输入格式和格式似乎不同。

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

    没用,但是

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

    (注意逗号与分号)

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

    【讨论】:

    • 这可能是由于 excel 使用的本地不同造成的。法语本地使用“;”我认为英语本地使用“,”
    【解决方案2】:

    试试这个。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多