如何在使用Perl和Excel时禁用科学记数法

我正在使用Excel :: Writer :: XLSX模块在Excel工作表中打印数字,但正在用科学记数法打印大整数。

可以打印成十进制数吗? 例如使用

$worksheet->write_number( 0, 0, 123456 ); $worksheet->write_number( 'A2', 2.3451 ); 

由于大数字以科学记数法打印有一些限制。

正如@toolic所暗示的,你可以这样做:

 my $format = $workbook->add_format( ); $format->set_num_format( '#' ); $worksheet->write_number( 'A1', 1234567890, $format ); 

这将指定“无小数位”作为您的格式。

请参阅如何控制和了解Excel中格式化单元格对话框中的设置以格式化引用。

正如已经提到的使用set_num_format可能是一种方法来帮助你解决这个问题,但上面的答案摆脱了任何十进制数字 – 请参阅这里的潜在风格列表使用…但只有如果你的数字有十五或更less的有效数字。 Excel将数字限制为15位有效数字。 https://superuser.com/questions/437764/why-is-excel-truncating-my-16-digit-numbers

幸运的是,就字符数而言,Excel更好一些! 🙂 http://excel.tips.net/T003163_Character_Limits_for_Cells.html

如果您只需要将数据作为Excel表格中的十进制数字,那么您可以select将这些单元格编写为string – 不要担心它们是string,但它们看起来像十进制数字很糟糕;)

 use Spreadsheet::WriteExcel; $WORKBOOK = Spreadsheet::WriteExcel->new($PutTheFileHere); $FORMAT_STRING = $WORKBOOK->addformat(num_format => '@'); $format = $FORMAT_STRING $worksheet->write($row_num, $col_num, $field_data, $format);