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 Итак, как вы это зацикливаете?

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

Ответы

Ответ 1

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

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

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

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

$worksheet = $objPHPExcel->getActiveSheet();
foreach($sheet as $row => $columns) {
    foreach($columns as $column => $data) {
        $worksheet->setCellValueByColumnAndRow($column, $row + 1, $data);
    }
}

Ответ 2

$rowID = 1;
foreach($sheet as $rowArray) {
   $columnID = 'A';
   foreach($rowArray as $columnValue) {
      $objPHPExcel->getActiveSheet()->setCellValue($columnID.$rowID, $columnValue);
      $columnID++;
   }
   $rowID++;
}

или

$objPHPExcel->getActiveSheet()->fromArray($sheet);

Ответ 3

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