我正在使用Spreadsheet::ParseExcel阅读.xls
文件,并且能够按原样获取数据。
但是,在使用Spreadsheet::XLSX阅读.xlsx
文件时,读取的值会被截断。
例如,2.4578
和.xls
文件中的.xlsx
分别被视为2.4578
和2.45
。
请提示为什么.xlsx
文件数据已损坏。
答案 0 :(得分:3)
我创建了一个简单的工作簿,其中包含一个工作表,只有2.4578
中的值A1
并运行以下脚本:
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
文件,我们将有更好的机会识别问题。
答案 1 :(得分:2)
对于未格式化的原始值而不是$cell->{Val}
,请尝试使用$cell->Value()
作为Excel格式的值。