Подтвердить что ты не робот

PHPExcel как установить значение ячейки динамически

Как установить значение ячейки/столбца динамически с помощью библиотеки PHPExcel?

Я извлекаю результирующий набор из базы данных MySQL, и я хочу писать данные в формате excel с использованием библиотеки PHPExcel. Глядя на пример

$objPHPExcel->getActiveSheet()->setCellValue('A1', 'cell value here');

указывает, что нам нужно жестко закодировать ссылку на ячейку/столбец As 'A1', затем он записывает ячейку/столбец A1. Как я могу увеличивать привязку ячеек/столбцов и/или строк на основе строк и соответствующих значений столбцов из набора результатов?

Пожалуйста, направляйте.

4b9b3361

Ответ 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);
    }