【发布时间】:2013-03-14 13:55:01
【问题描述】:
我正在使用
\PHPExcel_Shared_String::setThousandsSeparator(',');
为 Excel 文件定义千位分隔符。多亏了它,一个单元格显示为55 452 而不是55452。不过,单元格值是一个整数 55452,因此可以计算,在图表中使用等。
是否有类似的方法来定义百万分隔符等(例如,每 3 位定义一个分隔符)?
【问题讨论】:
我正在使用
\PHPExcel_Shared_String::setThousandsSeparator(',');
为 Excel 文件定义千位分隔符。多亏了它,一个单元格显示为55 452 而不是55452。不过,单元格值是一个整数 55452,因此可以计算,在图表中使用等。
是否有类似的方法来定义百万分隔符等(例如,每 3 位定义一个分隔符)?
【问题讨论】:
你需要定义这样的数字格式 "#,#0.##;[Red]-#,#0.##"
$workbook = new Spreadsheet_Excel_Writer('example.xls');
$worksheet =& $workbook->addWorksheet("example_sheet_name");
$format =& $workbook->addFormat();
$format->setNumformat('#,#0.##;[Red]-#,#0.##');
$worksheet->writeNumber(1, 1, '100000',$format);
output : 100.000,00
【讨论】:
千位分隔符将用于百万、十亿等;据我所知,Excel 不直接支持每个倍数的不同分隔符
但是,您可以定义以下数字格式掩码:
#:###!###,##0.00
它可能会在 MS Excel 本身中工作,尽管 PHPExcel 无法正确格式化值
【讨论】:
#:###!###,##0.00 上方格式化实际上会损坏生成的 Excel 文档。
#,##0;[Red]-#,##0。例如:$ws->getStyleByColumnAndRow($col, $row)->getNumberFormat()->setFormatCode('#,##0;[Red]-#,##0');