我正在使用PHP自动化excel电子表格。
我一直在寻找一种在PHPExcel中将单元格实际格式化为百分比的方法。
我想更改像
这样的值0.077922078
到
8%
有解决方法吗?
提前致谢。
答案 0 :(得分:37)
假设您的单元格为A1 ..
$objPHPExcel->getActiveSheet()->getStyle('A1')
->getNumberFormat()->applyFromArray(
array(
'code' => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00
)
);
答案 1 :(得分:1)
PHPExcel库只预定了几个基本的格式化常量。实际上你可以为几乎任何目的构建自己的(着色,格式化小数和数千等)。 Excel中的格式化功能非常庞大。下面将使用3位小数格式化百分比,并将负值着色为红色:
$workSheet
->getStyleByColumnAndRow($column, $row)
->getNumberFormat()
->setFormatCode('0.000%;[Red]-0.000%');
答案 2 :(得分:0)
您可以尝试以下代码:
$colLetter = "A";
$rowNumber = "1";
$objPHPExcel->getActiveSheet()
->getStyle("$colLetter:$rowNumber")
->getNumberFormat()
->applyFromArray([
"code" => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE
]);
答案 3 :(得分:0)
以防其他人在 PHPExcel 转向 PHPSpreadsheet 后看到此内容。
PHPSpreadsheet 有一个专门的函数来应用格式代码。因此,现在要将数字设置为百分比,我们需要将 applyFromArray()
替换为 setFormatCode()
,如下所示:
$spreadsheet
->getActiveSheet()
->getStyle("A1")
->getNumberFormat()
->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_PERCENTAGE_00);
注意:setFormatCode()
似乎不支持应用于整个列/行。因此,如果是您的情况,您将需要在列/行上创建一个循环以分别应用于每个单元格。