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

我有一个模板,我需要填充数据到dynamic生成的范围,每个由23列组成。 另外我正在使用数据表来填充数据到范围。

该公式也是为每个列和行dynamic生成的:

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

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

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

在上面的公式中,前缀是我将决定和dynamicreplace的列名,rowNum是每行的迭代值,也是被确定和replace的。

我在这里面临的问题是公式是dynamic生成的,并放置在Excel中所需的列中,但放置为文本。 如果我按“F2”然后按Enter键,公式就会被应用。

注意:我已经检查并确认在=之前没有空格

之前:

在这里输入图像说明

后:

在这里输入图像说明

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

我曾尝试过不同的选项

 R1C1 R1C1local ShowFormulas Ctrl + ' issue 

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

我已经应用了一个macros代码OnWorkbookOpen应用公式,我只是想知道有没有什么办法用SpreadsheetGear和没有macros代码实现这一点。

如果您提供了与SpreadsheetGear相关的例程来查看代码中是否有任何问题,这将有所帮助。

既然你提到使用DataTables我猜你正在使用IRange。 CopyFromDataTable (…)方法。 考虑到公式被视为文本,我也会猜测你传递了SetDataFlags .AllText选项。

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