PHP Excel 为公式单元格提供空白输出,直到单击启用编辑

Posted

技术标签:

【中文标题】PHP Excel 为公式单元格提供空白输出,直到单击启用编辑【英文标题】:PHP Excel Gives blank output for a formula cell until enable Editing is clicked 【发布时间】:2016-01-25 03:07:12 【问题描述】:

我正在使用 phpexcel 创建一个 xlsx 文件。我在文件中有很多公式。下载文件后,一些公式单元格(不是全部)显示为空白,直到我单击启用编辑选项。

我正在使用以下代码:

$objPHPExcel = new PHPExcel();
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$xlsName.'"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');

这里的问题发生在使用以前 Office 版本但没有启用编辑选项的用户身上。对于他们来说,这些单元格显示为空白。

【问题讨论】:

至少提供更多细节.....如果某些公式单元格是空白的,那么请告诉我哪些公式单元格...... 虽然您不应该使用Excel2007 Writer 并发送标头告诉浏览器该文件是application/vnd.ms-excel。这是.xls 文件的标头,它是使用Excel5 Writer 创建的。 Excel2007 Writer 生成 .xlsx 文件,其内容类型为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 我也试过 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 。然后我把它改成了这个,因为我是从***.com/questions/8566196/phpexcel-to-download链接得到的 标题不会影响您在使用公式时遇到的问题.....但它们确实会影响浏览器处理文件的方式.....使用您正在使用的文件格式的正确内容类型 但是除非我知道是什么公式导致了问题,否则我对公式无能为力......我猜不出......而且你的代码 sn-p 没有显示公式,并且只会创建一个空的电子表格,所以我怎么能开始猜测呢? 【参考方案1】:

我在其他地方遇到了这个答案。如果其他人正在寻找答案。

$spreadsheet = new \PHPExcel();
$writer = new \PHPExcel_Writer_Excel2007($spreadsheet);

//Do things with the $spreadsheet

//This is the solution, do it before saving
$writer->setPreCalculateFormulas(); 
$writer->save($saving_filepath);

【讨论】:

以上是关于PHP Excel 为公式单元格提供空白输出,直到单击启用编辑的主要内容,如果未能解决你的问题,请参考以下文章

Excel 数组,如果左侧相邻单元格为空白则忽略

为啥用excel的IF函数,不能输出空白呢

NPOI之Excel——合并单元格设置样式输入公式

Excel批量复制公式删除空白行

Excel批量复制公式删除空白行

NPOI之Excel——合并单元格设置样式输入公式