首页 > 解决方案 > 合并 Excel 中的单元格并使用 Spreadsheet::WriteExcel 提供超链接

问题描述

我正在使用电子表格::WriteExcel。我想合并两个单元格并提供指向合并单元格内内容的超链接。

我试过这样。

$Log_Sheet->merge_range('D2:E2','Home',$MergedFormat);
$Log_Sheet->write_url('D2','internal:sheet1!A1');

这工作正常,但是当我尝试打开一个文件时,它会显示一条警告,指出文件错误:数据可能已丢失。这是因为 D2 单元被覆盖。

如何合并单元格并在一次调用中提供超链接?

标签: excelperlhyperlink

解决方案


我不能保证这适用于 Spreadsheet::WriteExcel,但它适用于 Excel::Writer::XLSX。我鼓励您在 Spreadsheet::WriteExcel 上尝试一下。

对于合并的范围,一旦您声明了一种格式,您需要继续将它用于该范围,并且永远不要将它用于非合并的范围。因此,如果您获取代码并添加标签和格式对象:

$Log_Sheet->merge_range("D2:E2", 'Home', $MergedFormat);
$Log_Sheet->write_url('D2', 'internal:sheet1!A1', 'Click Me!', $MergedFormat);

它似乎确实有效......在 Excel::Writer::XLSX 上。很抱歉一直引用它。

或者,根据上一篇文章(文件错误:提供超链接时数据可能已丢失),您还可以使用 Excel 中的内置超链接功能:

my $merged = $workbook->add_format();
$worksheet->merge_range("A10:A11",
  qq{=hyperlink("#'Sheet3'!A1","Click Here!")},
  $merged);

推荐阅读