3

我正在使用 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

如何保持时间字符串为字符串?

谢谢!L.

4

1 回答 1

8

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

Excel 将日期存储为浮点数,因此如果要格式化这些日期,可以使用 Spreadsheet::ParseExcel::Utility 中的 ExcelFmt() 函数,并且您需要使用未格式化的值作为该函数的参数之一。您甚至可以通过以下方式获取格式参数$cell->get_format()

于 2013-07-10T17:38:00.463 回答