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} || "";
    }   
}

問題は、時間値が float に変換されることです。

 '0m14m35' becomes:  0.0101273148148148
 '0m29m35' becomes:  0.0205439814814815

時間文字列を文字列のままにしておくにはどうすればよいですか?

ありがとう!L.

4

1 に答える 1

8

$cell->{Val}フォーマットされていない値です (これは と同じ$cell->unformatted()です)。フォーマットされた値である$cell->value()( と同じ) を取得してみてください。$cell-{_Value}

Excel は日付を float として格納するため、それらを書式設定する場合は、Spreadsheet::ParseExcel::Utility の ExcelFmt() 関数を使用できます。書式設定されていない値をその関数の引数の 1 つとして使用する必要があります。フォーマット引数を取得することさえできるかもしれません$cell->get_format()

于 2013-07-10T17:38:00.463 に答える