PHPExcel как установить значение ячейки динамически
Как установить значение ячейки/столбца динамически с помощью библиотеки PHPExcel?
Я извлекаю результирующий набор из базы данных MySQL, и я хочу писать данные в формате excel с использованием библиотеки PHPExcel. Глядя на пример
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'cell value here');
указывает, что нам нужно жестко закодировать ссылку на ячейку/столбец As 'A1', затем он записывает ячейку/столбец A1. Как я могу увеличивать привязку ячеек/столбцов и/или строк на основе строк и соответствующих значений столбцов из набора результатов?
Пожалуйста, направляйте.
Ответы
Ответ 1
Я предполагаю, что вы уже подключились к своей базе данных.
$sql = "SELECT * FROM my_table";
$result = mysql_query($sql);
$row = 1; // 1-based index
while($row_data = mysql_fetch_assoc($result)) {
$col = 0;
foreach($row_data as $key=>$value) {
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
$col++;
}
$row++;
}
Ответ 2
У меня нет большого опыта работы с php, но с логической точки зрения это то, что я буду делать.
- Прокрутите список результатов из MySQL
- В Excel вы уже должны знать, что должны быть A, B, C, потому что это столбцы, и вы знаете, сколько столбцов вы возвращаете.
- Число строк можно просто увеличивать с каждым циклом.
Ниже приведено несколько псевдокодов, иллюстрирующих этот метод:
for (int i = 0; i < MySQLResults.count; i++){
$objPHPExcel->getActiveSheet()->setCellValue('A' . (string)(i + 1), MySQLResults[i].name);
// Add 1 to i because Excel Rows start at 1, not 0, so row will always be one off
$objPHPExcel->getActiveSheet()->setCellValue('B' . (string)(i + 1), MySQLResults[i].number);
$objPHPExcel->getActiveSheet()->setCellValue('C' . (string)(i + 1), MySQLResults[i].email);
}