Я пытаюсь создать комментарий на листе XLSX, используя PHPSpreadsheet. Все работает отлично, за исключением того факта, что, по-видимому, нет способа заставить комментарий начать скрытым по умолчанию - когда я открываю сгенерированный файл Excel в LibreOffice, отображаются все комментарии. Класс Comment
имеет метод setVisible
, но, похоже, его игнорируют.
Я использую PHPSpreadsheet 1.9.0 через Composer.
Полный пример:
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');
Комментарий в А1 должен (в теории) начинаться скрытно, но он показывается по умолчанию.
Редактировать - Дополнительная информация. Комментарии начинаются скрытыми в Excel, поэтому это может указывать на некоторую проблему с LibreOffice. Однако, если вы скрываете комментарий в LibreOffice, сохраняете его обратно в XLSX и снова открываете, комментарий действительно становится скрытым - так что, очевидно, это какая-то несовместимость между тем, как PHPSpreadsheet записывает комментарий, и тем, как LibreOffice ожидает его. Я подал ошибку в Libreoffice Calc ( # 128447 ).