我正在使用Perl模块Spreadsheet :: XLSX来解析Excel电子表格。部分数据如下所示:
Time A1 A2 A3
0m14m35 0.12 0.13 0.14
0m29m35 0.15 0.16 0.17
以下是代码的一部分:
foreach my $row ($sheet->{MinRow} .. $sheet->{MaxRow}) {
foreach my $col ($sheet->{MinCol} .. $sheet->{MaxCol}) {
my $cell = $sheet->{Cells}[$row][$col];
my $val = $cell->{Val} || "";
}
}
问题是时间值被转换为浮点数:
'0m14m35' becomes: 0.0101273148148148
'0m29m35' becomes: 0.0205439814814815
如何将时间字符串保留为字符串?
谢谢! 升。
答案 0 :(得分:8)
$cell->{Val}
是未格式化的值(与$cell->unformatted()
相同)。尝试获取$cell->value()
(与$cell-{_Value}
相同),这是格式化的值;
Excel将日期存储为浮点数,因此如果要格式化这些日期,可以使用Spreadsheet :: ParseExcel :: Utility中的ExcelFmt()函数,并且您将希望使用未格式化的值作为其中一个参数功能。您甚至可以使用$cell->get_format()