为什么在读取Perl中的Excel 2007(.xlsx)文件时,数值会被截断?

我正在使用Spreadsheet :: ParseExcel读取.xls文件,并能够按原样获取数据。

但是,使用Spreadsheet :: XLSX读取.xlsx文件时,读取的值将被截断。

例如, 2.4578 in .xls.xlsx文件分别读取为2.45782.45

请build议为什么.xlsx文件数据已损坏。

我创build了一个简单的工作簿,其中包含一张工作表,只有A1的值为2.4578 ,并运行以下脚本:

 use Spreadsheet::XLSX; my $excel = Spreadsheet::XLSX->new('Book1.xlsx'); my ($sheet) = @{ $excel->{Worksheet} }; print $sheet->{Cells}[0][0]{Val}, "\n"; 

输出:

  C:\ Temp> x
 2.4578000000000002 

所以,在这个简单的情况下,一切似乎都可以。

如果您可以发布一个简短的,自包含的示例来展示问题,并且可以查看一个小样本.xlsx文件,我们可以更好地找出问题。

对于Excel格式化的值,请尝试使用$cell->{Val}获取未格式化的原始值,而不是$cell->Value()