首页 > 解决方案 > PHPSpreadsheet 不显示十进制数字,尽管使用了格式

问题描述

我正在处理 Excel 导出,其中每一行都需要有一个百分比值,四舍五入到小数点后一位。导出电子表格后,用户需要能够在电子表格中使用这些值进行计算,因此我不能简单地将它们格式化为字符串(或百分比,Excel 出于某种原因不喜欢使用百分比进行计算)。我尝试了一些不同的方法,但没有一个有效;

$sheet->getCell($coord)->setValueExplicit(
    $amount['percentage'],
    DataType::TYPE_NUMERIC
);

其中$coord是所需的单元格(例如'A1'),并且$amount['percentage']是像45.2.

我尝试过的另一件事(直接来自 PHPSpreadsheet 文档);

$sheet->setCellValue($coord, $amount['percentage']);
$sheet->getStyle($coord)
    ->getNumberFormat()
    ->setFormatCode(NumberFormat::FORMAT_NUMBER_00);

在这两种情况下,数字都被添加为一个没有小数位的整数(因此45而不是45.2),只有在单击 Excel 中的“增加小数”按钮时才会显示小数。

如果我更改数字DataType::TYPE_NUMERICDataType::TYPE_STRING我想要的方式显示,但由于它被打印为字符串,它不能用于进一步计算。

导出后是否可以始终显示十进制数?

标签: phpexcelsymfonyphpspreadsheet

解决方案


试试这样?

$sheet->getStyle($coord)
    ->getNumberFormat()
    ->setFormatCode('0.000000');

Excel 最多支持 15 个有效数字


推荐阅读