PHPExcel, как установить значение ячейки динамически
Как динамически установить значение ячейки / столбца с помощью библиотеки PHPExcel?
Я получаю набор результатов из базы данных MySQL и хочу записать данные в формате Excel, используя библиотеку PHPExcel. Глядя на пример
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'cell value here');
указывает, что мы должны жестко кодировать ссылку на ячейку / столбец как "A1", а затем записывает в ячейку / столбец A1. Как я могу увеличить ячейку / столбец и / или ссылку на строку на основе строк и соответствующих значений столбцов из набора результатов?
Пожалуйста, руководство.
2 ответа
Решение
Я полагаю, вы уже подключились к своей базе данных.
$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++;
}
У меня нет большого опыта работы с 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);
}