Excel 公式在使用 SpreadsheetGear 导出时显示为文本

Excel formula is displayed as text upon exporting using SpreadsheetGear

我有一个模板,我需要将数据填充到动态生成的范围内,每个范围由 23 列组成。 我还使用数据 table 将数据填充到范围内。

公式也是为每一列和每一行动态生成的:

"=IF(COUNT(" + prefix + "J" + rowNum + ":" + prefix + "L" + rowNum + ")>0," + prefix + "J" + rowNum + "+" + prefix + "K" + rowNum + "+" + prefix + "L" + rowNum + ",\"\")";

当动态应用值时,上面的公式将如下所示:

=IF(COUNT(J12:L12)>0,J12+K12+L12,"")

在上面的公式中,prefix是我要动态确定和替换的列名,rowNum是每行的迭代值,也是确定和替换的。

我在这里面临的问题是公式是动态生成的,并放置在 excel 的必填列中,但作为文本放置。如果我按 'F2' 然后按 Enter,将应用公式。

注意:我已经核实过=

前没有space

之前:

之后:

我没有做任何更改,我只是按 F2 进入公式,然后按 Enter 键并应用公式

我尝试过各种选择,例如

R1C1
R1C1local
ShowFormulas
Ctrl + ' issue

由于我有超过 100 列和无限行要计算,我无法转到每个范围并将范围设置为公式然后计算。

我已经应用了宏代码 OnWorkbookOpen 来应用公式,我只是想知道有没有什么方法可以使用 SpreadsheetGear 而不用宏代码来实现它。

如果您提供与 SpreadsheetGear 相关的例程以查看该代码中是否存在任何问题,将会有所帮助。

既然你提到使用 DataTables,我猜你正在使用 IRange.CopyFromDataTable(...) method. Given that formulas are being treated as text, I will also guess that you are passing in the SetDataFlags.AllText 选项。

如果是这种情况,您将看到此 AllText 标志的预期行为,因为 DataTable 中的 all 值将被视为文本,包括公式。您需要停止使用 AllText 选项以防止这种情况发生。