2014-10-10 33 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。