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 для чтения всех вложенных массивов и использовать соответствующие переменные для создания ссылок на ячейки и добавления их на рабочий лист. Плагин будет обрабатывать размер.