2014-10-10 31 views
2

我正在生成一些复杂的Excel文件,其中包含很多工作表和公式。这些公式引用了其他工作表。但是我有两个相似的工作表,它们具有相同的“模板”,只是参考不同单元格的不同值和公式。PHPExcel:文档在受保护视图中打开,公式为零

当文件生成并在Excel中打开时,它在受保护的视图中打开,并且第一个提到的工作表中的某些公式不计算在内并为零。在第二个工作表中一切正常。当我点击“无论如何编辑”值得到计算,一切工作正常。

我无法找到两张几乎相同的工作表行为不同的原因,为什么简单的=SUM()公式即使从互联网上下载文件也无法计算。 什么可能导致这种行为?我不会发布代码,因为它长达数百行,我使用包装类,但它只是将值写入单元格。

我已经试过这个招数:

PHPExcel_Calculation::getInstance($objPHPExcel)->clearCalculationCache(); 
PHPExcel_Calculation::getInstance()->clearCalculationCache(); 
$objWriter->setPreCalculateFormulas(false); 

但他们没有工作。

感谢每一个提示可能是什么原因造成的。

+0

这是否发生在从互联网上下载的任何Excel文件中,或只有由PHPExcel创建的文件? – 2014-10-10 18:24:49

+0

如果我从本地主机下载它,那么即使计算出第一张表格,一切正常。但是如果我从网上下载它,第一张表只包含零。但是再次罚款,即使它来自互联网。 我不知道其他文档的作用,我需要解决生成这个文档的问题。 – 2014-10-10 18:56:10

+0

显然MS Excel认为localhost是“安全的” – 2014-10-10 18:57:43

回答

0

所以问题是我的公式是SUM()和第一个单元格的总和是空的。只是下一个包含价值的单元格。所以我已经将SUM范围的开始设置为下一行,并且一切都很正常。

4

我刚刚经历过同样的问题。正确的解决方法是:

$objWriter->setPreCalculateFormulas(TRUE); 

问题是由PHPExcel_Writer_Excel2007和可能造成的其他作家,已经默认了preCalculateFormulas值设置为false。