【问题标题】:Can't format number in PHPExcel无法在 PHPExcel 中格式化数字
【发布时间】:2017-02-10 13:35:50
【问题描述】:

我正在使用 PHPExcel 打印一些金额,我需要它们在逗号后有 4 个十进制数字,但我想删除任何尾随零。例如,我的输入是:

 Input: 11,1230 => Wanted output: 11,123
 Input: 0,0123  => Wanted output: 0,0123
 Input: 8,3200  => Wanted output: 8,32
 Input: 44,0000 => Wanted output: 44     <--error is here

问题是我无法摆脱44,0000 的尾随逗号,它打印为44,

我正在使用以下命令:

$activeSheet->getStyle("K10")->getNumberFormat()->setFormatCode('€ ####0.####');

所有数字都按预期打印,除了那些没有有效小数值的数字,例如 44,0000。有什么想法吗?

编辑:我知道我可以使用 MS Excel 来实现这一点,通过使用这些按钮

但我更喜欢 PHP 解决方案

【问题讨论】:

  • 你的小数点分隔符是什么?例如1/2 = 0.5 还是 0,5?
  • 0,5 就像示例中一样

标签: php phpexcel number-formatting


【解决方案1】:

也许你打算使用

€ ####0.0000

€ ####0.0###

而不是

€ ####0.####

# 告诉 MS Excel 仅在必要时在该位置显示数字,而 0 告诉 MS Excel 始终在该位置显示数字(即使该数字只是 0

但如果您使用.####,MS Excel 将始终显示小数点分隔符,即使它后面没有要显示的数字,除非您使用带有=MOD(A1,1)&gt;0 等公式的条件格式

【讨论】:

  • 我尝试了####0.0### 这似乎是最好的格式,但仍然打印出44,
  • 它应该打印 44,0,因为它明确告诉 MS Excel 将值格式化为始终显示小数点后至少一位数字,即使该数字是 0
  • 是的对不起,我的意思是44,0。但我会活着删除不必要的,0
  • 正如我的回答所说,抑制小数分隔符的唯一方法是使用条件格式来设置不同的掩码,如果值是整数或浮点数......这不是 PHPExcel 限制,这是 MS Excel 数字格式的限制
  • 嗯嗯也许我可以在设置单元格格式之前检查数字是否有小数,然后根据它决定
【解决方案2】:

我认为您需要 excel 的解决方案,因为您的最终结果将在 excel 表中可见,并且您的要求似乎仅使用数字格式是不可能的。我的建议是从 PHPExcel 添加条件数字格式。 Here 展示了它是如何使用 excel 完成的。

您可能必须重写 PHPExcel 类。

【讨论】:

  • 谢谢,但这意味着事后会浪费时间,这是我想避免的。覆盖 PHPExcel 实际上是让它工作的最佳方式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多