Как заставить PHPEXcel добавлять другие поля из базы данных

Я попытался создать электронную таблицу с классом PHPExcel из phpexcel.codeplex.com, но у меня возникла ситуация, и я не могу понять, что идет не так.

У меня есть 3 поля из базы данных, которые нужно вставить в таблицу «имя, цена», «акции».

Проблема в том, что я получаю только название продукта, которое является самым первым полем в таблице.

Это код, который я обрабатываю:

$ sql = "ВЫБРАТЬ имя, цену, наличие ИЗ ПРОДУКТОВ";

$objPHPExcel = new PHPExcel();

$res = $con->query( $sql );

// First row
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 'name', 1, 'Name' );
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 'price', 1, 'Price' );
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 'stock', 1, 'Stock' );

// Other rows
$i = 2;
while( $row = $res->fetch( PDO::FETCH_ASSOC ) ) {
    foreach( $row as $col => $data ) {
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $col, $i, $data );
    }
    $i++;
}

// Redirect output to a client web browser (Excel5)
header( 'Content-Type: application/vnd.ms-excel' );
header( 'Content-Disposition: attachment;filename="report.xls"' );
header( 'Cache-Control: max-age=0' );

$objWriter = PHPExcel_IOFactory::createWriter( $objPHPExcel, 'Excel5' );
$objWriter->save( 'php://output' );
exit;

Я не вижу, что мне не хватает ...

Заранее спасибо!


person Gilberto Albino    schedule 28.09.2012    source источник


Ответы (1)


$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( 'name', 1, 'Name' ); 

Аргумент столбца должен быть числовым значением: 0 = столбец A, 1 = столбец B и т. Д. Вы используете строку, которая будет по типу преобразована в числовой 0, поэтому все записывается в первый (0) столбец. , перезаписывая все, что уже есть .... Я удивлен, что вы не просто получаете значение последнего (стандартного) столбца

person Mark Baker    schedule 28.09.2012