C# – 以编程方式在保护模式下允许Excel单元格格式化

默认情况下,我们从服务器生成的.xlsx文件将在用户计算机的“保护模式”下打开。 在这种模式下,我注意到许多具有公式的单元格将不会被激活,因此这些单元格上不会显示任何内容。 编辑模式下一切正常。 所以我想问是否有任何方式编程允许单元格公式在保护模式下工作? 我的开发环境是MVC4,我使用ExcelCreator 8.0来生成excel文件。

*编辑:我主要关心的是用公式显示单元格的值。 他们只是一些简单的SUM()公式。 我注意到,当第一次打开文件时,这些单元格是空白的。 但是,当我第一次切换到编辑模式,而没有编辑,立即保存文件,然后下一次我打开保护模式,这些单元格有一些值显示。 那么我们至less可以编程来保存这些值,而不必首先打开编辑模式?

受保护的模式可以防止在Excel中重新计算公式。 有两种可能的解决scheme:

  • 禁用保护模式:这绝对不被推荐,因为它会在客户端上打开一个巨大的攻击面。 此外,这可能超出你可以控制的范围。
  • 预先计算公式结果:在生成电子表格服务器端时,可以预先计算公式的结果并将结果填充到单元格中。 这样,即使在保护视图中打开文档,Excel也会显示正确的值。 如果自己计算公式太复杂,则使用Excel Services可能是另一种方法,但成本较高。