我已经使用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将使用avalue binder
来标识您在单元格中设置的数据类型。
默认情况下,它是PHPExcel_Cell_DefaultValueBinder
,它对PHP数据类型是Null还是Boolean,或者是数值还是字符串,执行非常简单的检查。诸如37.7%
PHP字符串之类的值,因此将被视为字符串。
还有一个高级value binder
(PHPExcel_Cell_AdvancedValueBinder
),可以执行更复杂的检查,并且能够识别包含基本日期格式的字符串,并将其转换为Excel序列化的日期时间,并相应地设置数字格式掩码。它还可以检测货币值,分数和(最重要的是)百分比。
如果像37.7%
通过高级值绑定程序那样传递字符串值,它将以与MS Excel GUI完全相同的方式将数字部分除以100,并将数字格式掩码设置为百分比掩码。
要启用高级价值绑定程序,请致电
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );
在实例化PHPExcel对象之前。
您可以在以下位置找到高级活页夹用法的示例 /Examples/29advancedvaluebinder.php
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句