在 PHP Excel 中添加百分比数字格式
Posted
技术标签:
【中文标题】在 PHP Excel 中添加百分比数字格式【英文标题】:Adding Percentage Number Format in PHP Excel 【发布时间】:2018-02-28 15:48:44 【问题描述】:当我将单元格的格式设置为 % 时,它会自动将该值乘以 100 并显示该值。所以 94 变成了 9400%。
我想在列上应用 % 格式,但想保持与以前相同的值。我只希望 % 符号与值一起显示。我的价值应该是 94% 。为此,我使用了以下格式代码
$this->_xls_current_sheet->getStyle($cell_coordinates)->getNumberFormat()->applyFromArray(
array(
'code' => phpExcel_Style_NumberFormat::FORMAT_PERCENTAGE
));
【问题讨论】:
我相信这是由于 Excel 存储百分比的方式。在格式化之前,您不能只将单元格值除以 100 吗? 看起来PHPExcel itself 正在将单元格值乘以 100。 这是 php excel 用于 else if (preg_match('/%$/', $format)) // % number format 582: if ($format === self: :FORMAT_PERCENTAGE) 583: $value = round( (100 * $value), 0) 。 '%'; 584:否则 @amphetamachine - 不,PHPExcel 不会以任何方式更改值;它是 MS Excel GUI 除以 100 以将值设置为百分比 【参考方案1】:如果您将0.5
存储在单元格中,并将其格式化为百分比,那么它将显示为50%
....如果您将50
存储在单元格中,并将其格式化为百分比,则它将显示为5000%
,它应该是这样的。
如果您在 MS Excel GUI 中输入 50
作为数字,然后手动将格式掩码设置为百分比,您将获得 5000%
的显示值。但是,如果您在 MS Excel GUI 中输入 50%
,则 MS Excel 会将值除以 100 以将 0.5
存储在单元格中,并将其格式化为百分比(一步中的两个操作)。如果你在 MS Excel 中这样设置50%
,然后将格式掩码从百分比改为数字,那么你会看到 MS Excel 已经为你做了这个除法。
PHPExcel 不这样做(默认情况下)...它希望您将正确的值和格式设置为两个单独的步骤。所以 PHPExcel 希望您首先将正确的值存储在单元格 (0.5
) 中,当您想将其格式化为百分比时......它不会以任何方式神奇地改变值,它不会完全相乘。
请注意,如果您使用高级值绑定器(而不是默认值绑定器),并将单元格值设置为50%
,那么 PHPExcel 将除以 100 并自动设置为百分比,方式与MS Excel GUI。
【讨论】:
以上是关于在 PHP Excel 中添加百分比数字格式的主要内容,如果未能解决你的问题,请参考以下文章