#! /usr/bin/env perl
use warnings;
use 5.012;
use Spreadsheet::WriteExcel;
my $workbook = Spreadsheet::WriteExcel->new('test_test.xls') or die $!;
my $sheet = $workbook->add_worksheet();
my $format_in = $workbook->add_format(align => 'center', valign => 'vcenter');
my $format_st = $workbook->add_format(align => 'center', valign => 'vcenter');
$format_in->set_num_format ('hh:mm');
$format_st->set_num_format ('[h]:mm');
$sheet->set_row(0, 22);
$sheet->set_row(1, 22);
$sheet->set_column('A:D', 20, $format_in);
$sheet->set_column('E:E', 20, $format_st);
$sheet->write('A1', 'begin am');
$sheet->write('B1', 'end am');
$sheet->write('C1', 'begin pm');
$sheet->write('D1', 'end pm');
$sheet->write('E1', 'time');
$sheet->data_validation('A2:D2', {
validate => 'time',
criteria => 'between',
minimum => 'T06:00',
maximum => 'T20:00',
});
$sheet->write_formula('E2', '=(B2-A2)+(D2-C2)');
$workbook->close() or die $!;
?
が、私はこれを試してみましたが、それはうまくいきませんでした:スプレッドシート:: WriteExcel - 「エンド午前」 - 値が(その後、「午後の始まり」と「終わり午後」おろし金)「午前を始める」 - 値よりも大きい場合data_validationの種類を確認しますdata_validation
$sheet->data_validation('B2', {
validate => 'time',
criteria => '>=',
value => '=A2',
});
$sheet->data_validation('D2', {
validate => 'time',
criteria => '>=',
value => '=C2',
});
OpenOfficeを使ってテストしました。 –
それで、それはそれを説明します。 WriteExcel/OpenOfficeには(あなたの視点に応じて)OpenExpiceで正しく評価されていないWriteExcelによって生成されたデータの検証を妨げるバグがあります。ただし、Excelで評価します。 – jmcnamara