繁体   English   中英

试算表:: WriteExcel-data_validation

[英]Spreadsheet::WriteExcel - data_validation

#! /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 $!;

哪种data_validation将检查“ end am”值是否大于“ begin am”值(先是“ end pm”,然后是“ begin pm”)?
我试过了,但是没有用:

$sheet->data_validation( 'B2', {
    validate        => 'time',
    criteria        => '>=',
    value           => '=A2',
});
$sheet->data_validation( 'D2', {
    validate        => 'time',
    criteria        => '>=',
    value           => '=C2',
});

电子表格:: WriteExcel

您显示的后面的验证应该起作用。 请参见下面的屏幕截图:

替代文字

如果以hh:mm格式输入时间,则应该获得相同的效果。

您使用的是哪个版本的Excel? 这些数据验证不适用于OpenOffice。

PS我是Spreadsheet :: WriteExcel的作者。

尝试:

$sheet->data_validation( 'B2', {
    validate => 'custom',
    value => '=IF(B2>A2,TRUE,FALSE)',
} );

更新:这几乎完全是从http://metacpan.org/pod/Spreadsheet::WriteExcel#criteria (版本2.37)上方进行的,但是在OpenOffice中似乎不起作用-输入的任何值均被视为无效。

另一方面,在后面的示例中,这似乎永远不会说它是无效的:

$sheet->data_validation( 'B2', {
    validate => 'time',
    criteria => '>',
    value => '=A2',
} );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM