21

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

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

我想改变一个像

0.077922078

8%

有解决方案吗?

提前致谢。

4

4 回答 4

43

假设您的单元格是 A1 ..

$objPHPExcel->getActiveSheet()->getStyle('A1')
    ->getNumberFormat()->applyFromArray( 
        array( 
            'code' => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00
        )
    );
于 2013-05-07T21:43:46.563 回答
3

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

$workSheet
    ->getStyleByColumnAndRow($column, $row)
    ->getNumberFormat()
    ->setFormatCode('0.000%;[Red]-0.000%');
于 2016-08-28T13:53:38.457 回答
0

你可以试试这段代码:

$colLetter = "A";
$rowNumber = "1";

$objPHPExcel->getActiveSheet()
    ->getStyle("$colLetter:$rowNumber")
    ->getNumberFormat()
    ->applyFromArray([
        "code" => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE
    ]);
于 2017-07-19T10:20:46.170 回答
0

以防万一其他人在 PHPExcel 转向 PHPSpreadsheet 后看到这个。

PHPSpreadsheet 具有应用格式代码的专用功能。因此,现在要将数字设置为百分比,我们需要替换applyFromArray()setFormatCode()

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

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

于 2021-07-09T13:37:34.550 回答