在PHPExcel中将单元格格式设置为百分比

时间:2013-05-07 21:21:56

标签: php formatting phpexcel percentage

我正在使用PHP自动化excel电子表格。

我一直在寻找一种在PHPExcel中将单元格实际格式化为百分比的方法。

我想更改像

这样的值
  

0.077922078

  

8%

有解决方法吗?

提前致谢。

4 个答案:

答案 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() 似乎不支持应用于整个列/行。因此,如果是您的情况,您将需要在列/行上创建一个循环以分别应用于每个单元格。