使用Excel :: XLSX解析Perl中的电子表格

LKr*_*mer 3 perl spreadsheet xlsx

我使用Perl模块Spreadsheet :: XLSX来解析Excel电子表格.部分数据如下所示:

    Time        A1      A2      A3      
    0m14m35     0.12    0.13    0.14
    0m29m35     0.15    0.16    0.17
Run Code Online (Sandbox Code Playgroud)

这是代码的一部分:

foreach my $row ($sheet->{MinRow} .. $sheet->{MaxRow}) {

    foreach my $col ($sheet->{MinCol} ..  $sheet->{MaxCol}) {

        my $cell = $sheet->{Cells}[$row][$col];
        my $val = $cell->{Val} || "";
    }   
}
Run Code Online (Sandbox Code Playgroud)

问题是时间值转换为浮点数:

 '0m14m35' becomes:  0.0101273148148148
 '0m29m35' becomes:  0.0205439814814815
Run Code Online (Sandbox Code Playgroud)

如何将时间字符串保留为字符串?

谢谢!L.

run*_*rig 8

$cell->{Val}是未格式化的值(与之相同$cell->unformatted()).尝试获取$cell->value()(相同$cell-{_Value}),这是格式化的值;

Excel将日期存储为浮点数,因此如果要格式化它们,可以使用Spreadsheet :: ParseExcel :: Utility中的ExcelFmt()函数,并且您将希望使用未格式化的值作为该函数的参数之一.您甚至可以获得格式参数$cell->get_format()