我想将数组引用写入Excel,如
@eec = (
['maggie', 'milly', 'molly', 'may' ],
[13, 14, 15, 16 ],
['shell', 'star', 'crab', 'stone']
);
$worksheet->write_col('A1', \@eec);
但我的问题是我想嵌入超级链接。
我知道如何将超链接添加到特定的标签,
$worksheet->write('A4', 'http://www.perl.com/', 'Perl', $format);
但我应该怎么做才能显示超链接
标签'may
'?
有关详细信息,请参阅Example of how to use the Spreadsheet::WriteExcel module to write 1D and 2D arrays of data。
答案 0 :(得分:1)
Spreadsheet :: WriteExcel中的write()方法对于许多其他方法是syntactic wrapper。
一般情况下,如果它没有按照您的意愿执行,则有两种补救措施:使用显式需要的包装方法或修改write()方法的行为以满足您的需要。
如果是第一种情况,您只需要展开write()为嵌套数据提供的隐式循环。像这样:
#!/usr/bin/perl
use strict;
use warnings;
use Spreadsheet::WriteExcel;
my $workbook = Spreadsheet::WriteExcel->new( 'example.xls' );
my $worksheet = $workbook->add_worksheet();
my @eec = (
[ 'maggie', 'milly', 'molly', 'may' ],
[ 13, 14, 15, 16 ],
[ 'shell', 'star', 'crab', 'stone' ]
);
my $row = 0;
for my $aref ( @eec ) {
my $col = 0;
for my $token ( @$aref ) {
if ( $token eq 'may' ) {
$worksheet->write_url( $row, $col, 'http://foo.com', $token );
}
else {
$worksheet->write( $row, $col, $token );
}
$col++;
}
$row++;
}
__END__
在第二种情况下,您可以使用add_write_handler()方法修改write()。请查看documentation和examples。这是稍微高级的类别,所以如果您是Spreadsheet :: WriteExcel的新手,只需使用上面更简单的方法。
答案 1 :(得分:0)
Spreadsheet::WriteExcel
中的AFIU没有格式化URL以便以后写入的方法,所以最简单的方法是在数组中添加没有标签的URL:
@eec = (
['maggie', 'milly', 'molly', 'http://www.perl.com/' ],
[13, 14, 15, 16 ],
['shell', 'star', 'crab', 'stone'],
);
或使用$worksheet->write_url
方法覆盖特定单元格。