Я заметил, что разработчик PHPExcel читает этот форум, поэтому я форматирую свою проблему как прямой вопрос к нему.
Я пытаюсь взять полную стилизацию ячейки из шаблона Excel и скопировать ее в новый документ.
Насколько я вижу, есть метод Cell-> getStyle (), который возвращает объект стиля. Но нет способа применить этот объект стиля к другой ячейке.
Чтобы применить стиль, нужно использовать другую функцию, Cell-> getStyle (‘A1’) -> applyFromArray ($ styleArray). Эта функция принимает входные данные различного форматирования — массив стилей. И нет способа конвертировать из объекта стиля в массив стилей. Это почему? Почему здесь нет метода cell-> setStyle ()?
Я также заметил, что есть еще один метод, который может мне помочь, Worksheet-> duplicateStyle ():
$targetWorksheet->duplicateStyle(
$sourceWorksheet->getStyle($sourceCellCoordinate),
$targetCellCoordinate
);
Но при использовании этого метода для копирования TemplateA1-> TargetA1, а затем TemplateB2-> TargetB2, в тот момент, когда я копирую вторую ячейку, первая ячейка (TargetA1) будет повторно стилизована, чтобы также иметь второй стиль (TargetB2). Так что это тоже не работает.
Я потратил на это около часа, и мой следующий шаг, вероятно, будет заключаться в реализации объекта стиля -> преобразователя массива стиля.
Любая помощь будет оценена.
Спасибо!
На это уже ответили в этой внешней дискуссии:
https://phpexcel.codeplex.com/discussions/286662
Worksheet-> duplicateStyle () действительно не работает между файлами. Но есть обходной путь: временно добавьте исходный лист в целевой документ как новый лист, используя addExternalSheet (), скопируйте форматирование, затем снова удалите временный лист.
Я до сих пор не нашел ответа, почему нет метода cell-> setStyle ().
Других решений пока нет …