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

时间:2014-12-22 18:42:54

标签: excel perl xlsx writer

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

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

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

由于大量数字以科学记数法印刷,因此存在一些限制。

2 个答案:

答案 0 :(得分:2)

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

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

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

请参阅 How to control and understand settings in the Format Cells dialog box in Excel 以获取格式参考。

答案 1 :(得分:1)

正如已经提到的,使用set_num_format可能是一种帮助你解决这个问题的方法,但上面的答案摆脱了任何十进制数字 - 请参阅here以获取可能使用的样式列表......但是,如果你的数字有十五个或更少的有效数字。 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工作表中将数据作为十进制显示,那么您可以选择将这些单元格写为字符串 - 不要担心它们会成为字符串但它们看起来很像十进制数字;)

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);