2

如果我以仅包含值的 Excel5 格式保存 phpexcel 文档,则引用该文档的人可以毫无问题地打开和关闭它。

但是,如果我将一些公式放入单元格中,我会得到两个不希望的结果。

就在保存文档之前,我根据列的内容设置了列宽。由于尚未计算公式,因此列似乎仅与列中最大的单个值一样大,因此宽度设置得太窄。在excel中打开=sum()公式计算后,内容溢出单元格宽度并显示为###字符串。

第二个效果是,当用excel计算总数时,该书被excel标记为修改。当用户尝试退出图书时,系统会提示他们查看是否要保存更改。这令人不安,因为在他们看来,他们没有改变任何东西,而且令人讨厌,因为这是他们真的不想应对的中断。

我一直在搜索文档。我找到了对 $objWriter->setPreCalculateFormulas(true) 的引用,但它对这两个问题都没有帮助。

4

1 回答 1

2

如果一列设置为 AutoSize,PHPExcel 会尝试根据列的计算值(如 SUM() 公式的结果)以及由格式掩码添加的任何其他字符(例如千位分隔符)来计算列宽。默认情况下,这是一个估计的宽度:基于使用 GD 可以使用更精确的计算方法,但这是一个更大的开销,因此默认情况下它是关闭的。您可以启用更准确的计算使用

PHPExcel_Shared_Font::setAutoSizeMethod(PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT);

如果工作表包含公式,则某些版本的 MS Excel 文件包含详细说明计算树的附加信息:PHPExcel 未保存的数据(因为计算树结构的开销很大)。您没有指明您使用哪种格式来保存您的工作簿,或者您使用哪个版本的 MS Excel 打开它们;但这是在 MS Excel 中打开 PHPExcel 生成的文件时提示保存更改的正常解释。

于 2012-11-18T18:00:12.483 回答