在IWorksheetin Spreadsheetgear上使用ProtectContents

时间:2016-05-24 03:28:06

标签: c# excel spreadsheetgear

我是一个工作簿对象,其中我在某些单元格中使用excel公式。 我在IWorksheet对象上以编程方式设置ProtectContents的值,以打开和关闭这些单元格上的只读模式。

1.当ProtectContents的值设置为true时,我看到所有单元格都处于预期的只读模式,但是单元格(使用excel公式)值显示为#NAME?。这是怎么回事适用于Spreadsheetgear?

2.当ProtectContents设置为false时,我看到所有使用公式的单元格仍显示为#NAME的值?但是它们可以按预期编辑。但是想知道为什么这些单元格值没有被评估?

请告知。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

#NAME之间不应该存在任何关联吗?错误和工作表保护状态。 #名称?错误可能由于多种原因而发生,但如果没有关于您的特定情况的更多详细信息,则无法说明您为何会看到此错误。

您可能会在SpreadsheetGear中看到这一点的一个常见原因(我假设不在Excel本身?)是因为这些有问题的单元格中的公式直接或间接取决于工作簿的VBA部分中的用户定义函数(UDF)来自外部XLL加载项等.SpreadsheetGear不支持通过VBA或XLL执行UDF,因此这些函数将评估为#NAME?。

SpreadsheetGear支持通过SpreadsheetGear.CustomFunctions。Function类及其Evaluate(...)方法在.NET应用程序中实现自己的自定义函数。如果您发现上述原因,您可以实现自己的Function以使这些单元格正确计算。我提供了示例代码,但我首先要提到这是一个潜在的原因。更新您的问题更具体,如果需要,我可以相应地更新我的。