Spreadsheet::WriteExcel,尽管它很棒,但已经好几年没有更新了,据我所知,它只支持 .xls 的 pre-Office 2007 扩展。我真的建议您升级到 Excel::Writer::XLSX,这是 McNamara 对开放 XML 标准格式 (xlsx) 的精彩更新。
所以,我不能肯定地说,因为 Excel::Writer::XLSX 不会发生此错误,但我最初的理论是您将两个不同的值写入完全相同的单元格 (12, 0),所以一个基本上是在破坏另一个 - 因此是警告。
如果您升级到 Excel-Writer,警告应该会消失。更重要的是,如果你想要一个超链接,你可以在同一个调用中包含链接和友好的描述:
$worksheet->write_url(12, 0, 'internal:Sheet3!A1', 'Click Here!');
对于它的价值,我认为write 方法也会正确地将其解释为链接:
$worksheet->write(12, 0, 'internal:Sheet3!A1', 'Click Here!');
-- 编辑 2018 年 12 月 21 日--
如果想在合并单元格上做超链接,一种方法是使用 Excel 的超链接功能:
my $merged = $workbook->add_format();
$worksheet->merge_range("A10:A11",
qq{=hyperlink("#'Sheet3'!A1","Click Here!")},
$merged);