PHPSpreadsheet/XLSX:如何在 LibreOffice 中默认隐藏评论

Posted

技术标签:

【中文标题】PHPSpreadsheet/XLSX:如何在 LibreOffice 中默认隐藏评论【英文标题】:PHPSpreadsheet/XLSX: how to hide comments by default in LibreOffice 【发布时间】:2019-10-28 14:27:58 【问题描述】:

我正在尝试使用 phpSpreadsheet 在 XLSX 工作表中创建评论。一切正常,除了似乎没有办法让评论在默认情况下开始隐藏 - 当我在 LibreOffice 中打开生成的 Excel 文件时,会显示所有 cmets。 Comment 类确实有一个 setVisible 方法,但似乎被忽略了。

我正在通过 Composer 使用 PHPSpreadsheet 1.9.0。

完整示例:

require ('vendor/autoload.php');

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

$excel = new Spreadsheet();
$ws = $excel->getActiveSheet();
$ws->setCellValue('A1', 'Hello');
$ws->getComment('A1')->getText()->createTextRun("This is a comment");
$ws->getComment('A1')->setVisible(false);
$writer = IOFactory::createWriter($excel, 'Xlsx');
$writer->save('test-comments.xlsx');

A1 中的注释应该(理论上)开始隐藏,但默认显示。

编辑 - 一些附加信息。 cmets 确实开始隐藏在 Excel 中,因此这可能表明 LibreOffice 存在一些问题。但是,如果您在 LibreOffice 中隐藏评论,保存回 XLSX 并重新打开,评论确实开始隐藏 - 所以显然 PHPSpreadsheet 写出评论的方式与 LibreOffice 期望的方式之间存在某种不兼容。我已针对 Libreoffice Calc (#128447) 提交了一个错误。

【问题讨论】:

【参考方案1】:

如果有人偶然发现此问题,这已被确认为 LibreOffice 中的一个错误。有关详细信息,请参阅链接的错误报告。

【讨论】:

在 LibreOffice v6.3.4 中修复

以上是关于PHPSpreadsheet/XLSX:如何在 LibreOffice 中默认隐藏评论的主要内容,如果未能解决你的问题,请参考以下文章

如何删除在 R 中不完全重复的行

如何在 PHP 中使用正则表达式转换标记 (\u \l \U \L \E)?

如果 x 在集合 L 中,如何使用 lambda 函数创建返回 true 的函数 L

如何在桑基图中垂直改变节点的位置

如何评价 Android L

如何在 Android "L" 上获取最近的任务?