PHP excel - зацикливание данных?

У меня есть массив массивов данных.

поэтому основной формат

$sheet = array(
  array(
    'a1 data',
    'b1 data',
    'c1 data',
    'd1 data',
  ),
  array(
    'a2 data',
    'b2 data',
    'c2 data',
    'd2 data',
  ),
  array(
    'a3 data',
    'b3 data',
    'c3 data',
    'd3 data',
  )
);

Когда мне передают массив, я понятия не имею, сколько столбцов или строк будет. Что я хочу сделать, так это с помощью php excel создать лист excel из массива.

из того, что я видел, единственный способ установить данные - использовать $objPHPExcel->getActiveSheet()->setCellValue('A1', $value);

Итак, мой вопрос

Как бы вы зациклились на ячейках?

помня, что может быть, скажем, 30 столбцов и, скажем, 70 строк, что будет AD70 Итак, как вы это зациклите?

Или есть встроенная функция для преобразования массива в лист?


person Hailwood    schedule 04.04.2011    source источник


Ответы (3)


Вы можете установить данные из массива следующим образом:

$objPHPExcel->getActiveSheet()->fromArray($sheet, null, 'A1');

fromArray работает с двумерными массивами. Где 1-й аргумент — это двумерный массив, второй аргумент — что использовать, если есть нулевое значение, а последний аргумент — где должен быть верхний левый угол.

В противном случае вам нужно будет перебрать данные:

$worksheet = $objPHPExcel->getActiveSheet();
foreach($sheet as $row => $columns) {
    foreach($columns as $column => $data) {
        $worksheet->setCellValueByColumnAndRow($column, $row + 1, $data);
    }
}
person Jacob    schedule 04.04.2011
comment
@Mark Baker исправлено, и спасибо. Я действительно ценю вашу работу. - person Jacob; 05.04.2011
comment
Откуда мы взяли $rows и $columns в цикле foreach выше? - person Aziz; 21.07.2012
comment
Вы, вероятно, должны отметить, что 2D-массивы работают, но только в случае обычных массивов. - person Aditya M P; 15.12.2012
comment
Отличный ответ, Джейкоб, он мне очень помогает, и я экономлю много времени. - person Oskar Calvo; 27.02.2013
comment
$rows - это ваш двумерный массив ($sheets из вопроса)... Я обновлю ответ, чтобы устранить путаницу. - person Jacob; 30.04.2013

Насколько я знаю, вам не нужно знать высоту и ширину конечного листа Excel при заполнении листа с помощью PHP excel. Вы можете просто использовать вложенный цикл foreach для чтения всех вложенных массивов и использовать соответствующие переменные для создания ссылок на ячейки и добавления их на рабочий лист. Плагин будет обрабатывать размер.

person Rasika    schedule 04.04.2011
comment
Да, мой вопрос, как вы зацикливаете это? - person Hailwood; 05.04.2011

person    schedule
comment
Не могу конкурировать с разработчиком PHPExcel: D - person Jacob; 05.04.2011
comment
P.S. Я предполагаю, что способ увеличения символов в PHP значительно упрощает работу с ячейками Excel: D - person Jacob; 05.04.2011
comment
@Jacob - увеличение символов определенно полезно при работе с PHPExcel ... Я регулярно использую этот трюк. - person Mark Baker; 05.04.2011