2

Excel::Writer::XLSX モジュールを使用して Excel レポートを生成していますが、地域によって日付の形式が変わりません。

たとえば、地域を「英語 - 米国」に設定した場合、日付形式は Excel シートに表示される「mm/dd/yyyy」である必要があり、地域を「フランス - フランス」にリセットした場合、日付形式は次のようになります。 'dd/mm/yyyy'.

そこで、Excel::Writer::XLSX を使ってどのように実装されているか知りたいです。ありがとう。

4

1 に答える 1

1

Excel は、限られた数の日付形式を地域設定で保存します。たとえば、Excel の数値形式ダイアログでは、次のような警告が表示されます。

指定したタイプとロケール (場所) に従って、日付と時刻のシリアル番号を日付値として表示します。アスタリスク (*) で始まる日付形式は、コントロール パネルで指定された地域の日付と時刻の設定の変更に対応します。アスタリスクのない形式は、コントロール パネルの設定の影響を受けません。

Excel::Writer::XLSXnum_formatでは、書式文字列の代わりに ID 番号を使用してこれらを設定できます。例えば:

#!/usr/bin/perl

use strict;
use warnings;
use Excel::Writer::XLSX;

my $workbook   = Excel::Writer::XLSX->new( 'dates.xlsx' );
my $worksheet  = $workbook->add_worksheet( 'Demo' );

$worksheet->set_column('A:A', 20);


# Regional date format.
my $date_format_1 = $workbook->add_format( num_format => 14 );

# Non-regional date format.
my $date_format_2 = $workbook->add_format( num_format => 'dd/mm/yy' );

$worksheet->write_date_time( 'A1', '2013-10-27T', $date_format_1 );
$worksheet->write_date_time( 'A2', '2013-10-27T', $date_format_2 );

__END__

組み込みフォーマット ID のその他の例については、ドキュメントの num_format セクションを参照してください。

于 2013-10-10T08:30:49.797 に答える