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

22

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

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

我想将值更改为

0.077922078

变成

8%

是否有解决方法?

提前感谢。


你可以使用ceil()函数将数字四舍五入到最接近的整数,然后在将其放入Excel文件之前,在数字前面添加%符号。详细信息请参考:http://php.net/manual/zh/function.ceil.php - Dinesh
4个回答

45
假设你的单元格是A1..
$objPHPExcel->getActiveSheet()->getStyle('A1')
    ->getNumberFormat()->applyFromArray( 
        array( 
            'code' => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00
        )
    );

3
我猜想如果要得到一个直接的百分比,比如2%,我需要将FORMAT_PERCENTAGE_00中的"_00"去掉? - cwiggo
3
使用 PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE 来将数字格式化为百分数,例如"0.0%"或者"0.000%"等,可以显示一到三位小数点。也可以使用任何对应于有效的Excel数字格式掩码的字符串来格式化数字。 - Mark Baker
2
去掉“_00”是关键!!!我尝试了一下,效果非常好!谢谢@Chris - mongotop
很高兴看到我的问题被使用了:D祝你好运!感谢赞赏! - cwiggo

3

PHPExcel库预定义了一些基本格式常量。实际上,您可以为几乎任何目的(如着色、格式化小数和千位分隔符等)构建自己的常量。Excel中的格式化功能非常强大。以下是将百分比格式化为3位小数并将负值着色为红色的代码:

$workSheet
    ->getStyleByColumnAndRow($column, $row)
    ->getNumberFormat()
    ->setFormatCode('0.000%;[Red]-0.000%');

0
你可以尝试这段代码:
$colLetter = "A";
$rowNumber = "1";

$objPHPExcel->getActiveSheet()
    ->getStyle("$colLetter:$rowNumber")
    ->getNumberFormat()
    ->applyFromArray([
        "code" => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE
    ]);

你应该添加一个解释,说明你的答案对其他答案有何补充。 - gp_sflover
当然,@gp_sflover,你是对的,但我认为这段代码本身就很容易理解了 :) - simhumileco

0

如果有人在PHPExcel转为PHPSpreadsheet后看到这篇文章,请注意。

PHPSpreadsheet有一个专门的函数来应用格式代码。因此,现在我们需要将数字设置为百分比,需要将applyFromArray()替换为setFormatCode(),如下所示:

$spreadsheet
   ->getActiveSheet()
   ->getStyle("A1")
   ->getNumberFormat()
   ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_PERCENTAGE_00);

注意:似乎setFormatCode()不支持应用于整个列/行。因此,如果您的情况是这样的,您需要创建一个循环来逐个应用于每个单元格。


setFormatCode是PHPExcel中的一个函数。applyFromArray用于一次性设置多个样式。此外,您可以使用“A1:E10”作为单元格ID来为多个单元格设置格式。 - kainaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接