我使用PHPExcel制作了这张表
我用数组填充它.
它具有百分比形式的值,默认情况下将其视为文本形式.
如何将我的所有列转换为数字形式,以便我可以在其上应用一些数学公式.
$excel_out_Questions = $this->outputQuestions($Sets);
$objPHPExcel->getActiveSheet()->fromArray($excel_out_Questions, "" , 'A5');
我试过这个,但它不起作用……:/
$objPHPExcel->getActiveSheet()->getStyle('B434:B444')->getNumberFormat()->setFormatCode (PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
$objPHPExcel->getActiveSheet()->setCellValue( 'B445','=(SUM(B443:B444)-SUM(B434:B440))*100)');
请建议.
提前致谢
解决方法:
除非使用setCellValueExplicit(),否则PHPExcel使用值绑定器来标识您在单元格中设置的数据类型.
默认情况下,这是PHPExcel_Cell_DefaultValueBinder,它可以非常简单地检查PHP数据类型是Null还是Boolean,或者是数值还是字符串.诸如37.7%之类的值是PHP字符串,因此将被视为字符串.
还有一个高级值绑定器(PHPExcel_Cell_AdvancedValueBinder),它可以执行更复杂的检查,并且能够识别包含基本日期格式的字符串并将它们转换为Excel序列化日期时间,并相应地设置数字格式掩码.它还可以检测货币值,分数和(最重要的)百分比.
如果通过高级值绑定器传递37.7%的字符串值,则会将数字部分除以100,并将数字格式掩码设置为百分比掩码,其方式与MS Excel GUI完全相同.
要启用高级值绑定器,请调用
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );
在实例化PHPExcel对象之前.
您可以在/Examples/29advancedvaluebinder.php中找到高级活页夹用法的示例