Excel :: Writer :: XLSX使用数字作为超链接

时间:2016-07-25 12:06:21

标签: perl

需要创建一个Excel文件,其中某些单元格中有numbers,这些数字应该作为超链接的标签。

所以,使用以下演示代码:

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

my $workbook = Excel::Writer::XLSX->new( 'test.xlsx' );
my $f_url = $workbook->add_format( color => 'blue', underline => 1 );
my $worksheet = $workbook->add_worksheet();

my $url = 'http://example.com/aaa=';
my $num = 123;

$worksheet->write_url( 0, 0, $url.$num, $f_url, $num );

$workbook->close();

在Excel中打开test.xlsx后,它会显示有关number stored as text的单元格警告,如下面的屏幕截图所示:

enter image description here

选择convert to number后:

enter image description here

E.g。正确的超链接,其中"数字"是真正的数字(右对齐,没有警告)。

问题是:如何创建test.xlsx以获得正确的细胞类型?例如number hyperlink

Excel::Writer::XLSX知道:

write_string()
write_number()
write_blank()
write_formula()
write_url()
write_row()
write_col()

write_url(在示例中使用)生成" text"而不是数字类型的单元格。

这里有一些解决方法可以在没有警告的情况下创建正确的xlsx吗?

1 个答案:

答案 0 :(得分:1)

只需要更准确地阅读文档。它说:

  

如果您希望获得其他一些细胞数据,例如数字或公式   您可以使用另一个写入_ *()来覆盖单元格:

所以,解决方案正在使用:

$worksheet->write_url( 0, 0, $url.$num, $f_url, $num );
# adding another write after the write_url - the link remains
$worksheet->write_number( 0, 0, $num, $f_url ); # and now it is an number