在 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 中添加百分比数字格式的主要内容,如果未能解决你的问题,请参考以下文章

在 Excel 中的数字字段中添加百分号

如何让excel饼图的百分比带两位小数

如何让excel中的数字都显示为百分比

excel格式:显示不带百分号的百分比值

excel如何计算占总数的百分比

格式化百分比 SQL - EXCEL ssis