PhpExcel: как эмулировать перетаскивание содержимого ячейки в Excel - PullRequest
2 голосов
/ 08 февраля 2012

Я пишу сценарий PHP для генерации отчетов Excel с использованием PHP Excel.То, что я хотел бы сделать, это позволить пользователям указать, что константы ячеек можно «перетаскивать».Под этим я подразумеваю использовать или эмулировать эту функцию Excel, которая позволяет пользователю выбирать одну или несколько ячеек и перетаскивать их содержимое, чтобы генерировать содержимое смежных ячеек.Я не могу найти какую-либо информацию по этому вопросу.Нужно ли мне генерировать содержимое ячейки в моем скрипте или есть какая-то хитрая особенность PHP Excel, которая может сделать это для меня?Я бы предположил первое, но я очень новичок в PHPExcel, поэтому хочу убедиться перед тем, как окунуться.

1 Ответ

4 голосов
/ 08 февраля 2012

В PHPExcel нет «скрытых» функций, вам нужно установить содержимое для каждой ячейки, но есть пара методов, которые могут помочь установить несколько значений ячейки за один вызов.

Если вы говорите о прямом содержании данных, вы можете указать начальную ячейку и передать массив значений методу fromArray () в Рабочем листе:

* Fill worksheet from values in array
*
* @param  array   $source                 Source array
* @param  mixed   $nullValue              Value in source array that stands for blank
*                                             cell
* @param  string  $startCell              Insert array starting from this cell
*                                             address as the top left coordinate
* @param  boolean $strictNullComparison   Apply strict comparison when testing for null
*                                             values in the array
* @throws Exception
* @return PHPExcel_Worksheet
public function fromArray( $source = null, 
                           $nullValue = null, 
                           $startCell = 'A1', 
                           $strictNullComparison = false
                         )

Если вам нужно манипулировать формулами в диапазоне ячеек, например, = $ A1 + $ B1 + $ C $ 1 для набора строк, так что $ A1 и $ B1 становятся $ A2 и $ B2 для второй строки, $ A3 и $ B3 для третьей и т. Д., А затем метод updateFormulaReferences () в ReferenceHelper может быть полезным:

* Update references within formulas
*
* @param   string  $pFormula    Formula to update
* @param   int     $pBefore     Insert before this one
* @param   int     $pNumCols    Number of columns to insert
* @param   int     $pNumRows    Number of rows to insert
* @return  string  Updated formula
* @throws  Exception
public function updateFormulaReferences( $pFormula = '', 
                                         $pBefore = 'A1', 
                                         $pNumCols = 0, 
                                         $pNumRows = 0, 
                                         $sheetName = ''
                                       )
...