带有小数的数字格式化 phpspreadsheet 不被导出的 xlsx 视为数字
Number formatting phpspreadsheet with decimals not seen as numbers by the exported xlsx
我有一个页面,其中包含航班费用、酒店住宿费用和总费用的行的简单概览,它在 xlsx 中添加了一个带有 phpspreadsheet 的导出。
费用需要以欧元显示,格式为:
€ 1120,46
或
€ 1.120,46
任何一个都可以。
航班费用的值是可变的,来自数据库,如十进制 (6,2),来自早期的用户输入。酒店费用是固定金额 (76) * 天数(基于航班日期)。
我还在电子表格中使用求和函数来添加列的总计,但其余计算是通过 PHP 完成的,并作为单元格的值添加。
对于带有数字的单元格,使用:
...->setFormatCode(PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_CURRENCY_EUR);
或'FORMAT_CURRENCY_EUR_SIMPLE',结果相同,但数字后面的€符号不是我需要的。所以我正在使用这个:
...->setFormatCode('[$€ ]#,##0.00_-');
在 xlsx 导出中,它非常适合不带小数点的数字。数字显示正确,求和功能也有效,包括正确位置的 € 符号。
但是当数字包含小数时,它会像我想要的那样停止工作。
如果我添加一个像“120.45”这样的数字,xlsx 导出显示“120.45.0”并且 Excel 没有报告任何问题而且求和函数不计算任何东西。
如果我添加一个数字,如“120,45”,xlsx 导出显示“120,45”,但 Excel 报告它不是一个数字,并且求和函数不计算任何内容。然后,您可以单击 Excel 中的警告三角形并将其设为数字。此时它的值被 sum 函数添加到总数中。
这两个选项也未能添加 € 符号。
我尝试在 PHP 端使用这些类型的格式添加数字:
$sheet->setCellValue('S5, number_format ($price, 2, ",", ""));
$sheet->setCellValue('S5, number_format ($price, 2, ".", ""));
$sheet->setCellValue('S5, str_replace(',','.',$price));
$sheet->setCellValue('S5, str_replace('.',',',$price));
对于十进制值,这产生了与上面相同的结果,并且 'number_format(...)' 将非十进制值也作为值,因此没有一个数字和求和函数可以正常工作。
知道这可能是什么吗?
我正在使用相同的 api (phpspreadsheet) 并且遇到了这个问题。
我在开发人员页面上找到了一份报告以及他们所做的更正。
问题是解决使用“.”(点)作为小数点分隔符的国家/地区的小数点问题。对我们来说,更正只是带来了更多的问题。
我的解决办法是在此时最后一次修正(1.10.1)之前设置最后一个稳定版本(1.10.0)。
我刚刚打开了一个问题报告,现在我正在等待答案。
我有一个页面,其中包含航班费用、酒店住宿费用和总费用的行的简单概览,它在 xlsx 中添加了一个带有 phpspreadsheet 的导出。 费用需要以欧元显示,格式为:
€ 1120,46
或
€ 1.120,46
任何一个都可以。
航班费用的值是可变的,来自数据库,如十进制 (6,2),来自早期的用户输入。酒店费用是固定金额 (76) * 天数(基于航班日期)。
我还在电子表格中使用求和函数来添加列的总计,但其余计算是通过 PHP 完成的,并作为单元格的值添加。
对于带有数字的单元格,使用:
...->setFormatCode(PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_CURRENCY_EUR);
或'FORMAT_CURRENCY_EUR_SIMPLE',结果相同,但数字后面的€符号不是我需要的。所以我正在使用这个:
...->setFormatCode('[$€ ]#,##0.00_-');
在 xlsx 导出中,它非常适合不带小数点的数字。数字显示正确,求和功能也有效,包括正确位置的 € 符号。
但是当数字包含小数时,它会像我想要的那样停止工作。
如果我添加一个像“120.45”这样的数字,xlsx 导出显示“120.45.0”并且 Excel 没有报告任何问题而且求和函数不计算任何东西。
如果我添加一个数字,如“120,45”,xlsx 导出显示“120,45”,但 Excel 报告它不是一个数字,并且求和函数不计算任何内容。然后,您可以单击 Excel 中的警告三角形并将其设为数字。此时它的值被 sum 函数添加到总数中。
这两个选项也未能添加 € 符号。
我尝试在 PHP 端使用这些类型的格式添加数字:
$sheet->setCellValue('S5, number_format ($price, 2, ",", ""));
$sheet->setCellValue('S5, number_format ($price, 2, ".", ""));
$sheet->setCellValue('S5, str_replace(',','.',$price));
$sheet->setCellValue('S5, str_replace('.',',',$price));
对于十进制值,这产生了与上面相同的结果,并且 'number_format(...)' 将非十进制值也作为值,因此没有一个数字和求和函数可以正常工作。
知道这可能是什么吗?
我正在使用相同的 api (phpspreadsheet) 并且遇到了这个问题。 我在开发人员页面上找到了一份报告以及他们所做的更正。 问题是解决使用“.”(点)作为小数点分隔符的国家/地区的小数点问题。对我们来说,更正只是带来了更多的问题。
我的解决办法是在此时最后一次修正(1.10.1)之前设置最后一个稳定版本(1.10.0)。
我刚刚打开了一个问题报告,现在我正在等待答案。