Excel公式在使用SpreadsheetGear

时间:2017-08-04 16:44:19

标签: c# excel spreadsheetgear

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

还为每个列和行动态生成公式:

"=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是列名i,ll动态确定和替换,rowNum是每行的迭代值,也是确定和替换的。

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

注意:我已检查并确认 =

之前没有空格

在:

enter image description here

后:

enter image description here

我没有改变任何东西,我只是按F2然后进入公式,只需按Enter键即可应用公式

我尝试了各种选项,例如

R1C1
R1C1local
ShowFormulas
Ctrl + ' issue

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

我已应用宏代码OnWorkbookOpen来应用公式,我只是想知道有没有办法用SpreadsheetGear实现这个并且没有宏代码。

1 个答案:

答案 0 :(得分:1)

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

由于你提到使用DataTables,我猜你正在使用IRange。CopyFromDataTable(...)方法。鉴于公式被视为文本,我还猜测你传递的是SetDataFlags。AllText选项。

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