【发布时间】:2015-09-04 12:38:00
【问题描述】:
我遇到了 PHPExcel 问题,似乎找不到解决方案。 我根据 PHPExcel 文档中提供的基本示例编写了一个脚本,以从 XLSX 文件创建 PDF 文件,我的代码如下所示:
$inputfile = “test.xlsx”;
$objReader = PHPExcel_IOFactory::createReaderForFile($inputfile);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputfile);
[…]
$objWriter = new PHPExcel_Writer_PDF($objPHPExcel);
$objWriter->setSheetIndex(0);
$objWriter->setPreCalculateFormulas(true);
$objWriter->save("test.pdf");
我使用的 PDF Writer 库是 DomPDF。
现在的问题是,当我尝试使用我正在处理的特定文件创建 PDF 时,上面的代码将返回一个错误。
Fatal error: Uncaught exception 'PHPExcel_Calculation_Exception' with message 'Sheet!C5 -> Formula Error: Wrong number of arguments for COUNTIFS() function: 4 given, 2 expected' in D:\xampp\htdocs\doc\phpxls\Classes\PHPExcel\Cell.php:300 Stack trace: #0 D:\xampp\htdocs\doc\phpxls\Classes\PHPExcel\Writer\HTML.php(1174): PHPExcel_Cell->getCalculatedValue() #1 D:\xampp\htdocs\doc\phpxls\Classes\PHPExcel\Writer\HTML.php(436): PHPExcel_Writer_HTML->_generateRow(Object(PHPExcel_Worksheet), Array, 4) #2 D:\xampp\htdocs\doc\phpxls\Classes\PHPExcel\Writer\PDF\DomPDF.php(109): PHPExcel_Writer_HTML->generateSheetData() #3 [internal function]: PHPExcel_Writer_PDF_DomPDF->save('testing.pdf') #4 D:\xampp\htdocs\doc\phpxls\Classes\PHPExcel\Writer\PDF.php(87): call_user_func_array(Array, Array) #5 D:\xampp\htdocs\doc\interface\xls2pdf_2.php(59): PHPExcel_Writer_PDF->__call('save', Array) #6 D:\xampp\htdocs\doc\interface\xls2pdf_2.php(59): PHPExcel_Writer_PDF->save('testing.pdf') #7 {main} thrown in D:\xampp\htdocs\doc\phpxls\Classes\PHPExcel\Cell.php on line 300
您可以看到它与“COUNTIFS()”有关,我的假设是 setReadDataOnly(true) 只会给我单元格的值并在阅读文档后忽略公式我意识到这不是真的。有没有办法只获取没有公式的单元格的值?
如果我设置$objWriter->setPreCalculateFormulas(false);
它将正常工作,但返回的 PDF 文件将显示公式而不是单元格中的计算值(显然)
有什么方法可以让这项工作像我想要的那样工作吗?只是读/写值而忽略公式?
我怀疑该错误与公式中的分隔符有关文件
=ZÄHLENWENNS(Migration_LSA!$AR$2:$AR$121;">=1/4/2014";Migration_LSA!$AR$2:$AR$121;"<=30/4/2014")
理论上在 PHPExcel 中应该是这样的
=COUNTIFS(Migration_LSA!$AR$2:$AR$121,">=1/4/2014",Migration_LSA!$AR$2:$AR$121,"<=30/4/2014")
【问题讨论】: