Я хочу отобразить все строки из таблицы с соответствующими именами столбцов выше, что работает. Проблема в том, что она удаляет первую строку из результатов ниже имен столбцов. Это как если бы строка столбца каким-то образом подсчитывалась как строка в цикле while, которая отображает результаты, но я не могу понять это.PHPExcel несколько циклов foreach
Если я удалю код названий столбцов, показанный ниже, все результаты будут показаны.
//COLUMN NAMES
foreach($headings as $heading) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$heading);
$col++;
}
Весь код, показанный ниже.
$query = "SELECT * FROM `" . $_SESSION['sess_table'] . "` ORDER by ID ASC";
if ($result = $mysqli->query($query)) {
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle($excelTitle);
$headingsrow = $result->fetch_assoc();
$headings = array_keys($headingsrow);
//COLUMN NAMES
$rowNumber = 1;
$col = 'A';
foreach($headings as $heading) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$heading);
$col++;
}
//RESULTS
$rowNumber = 3;
while ($row = $result->fetch_row()) {
$col = 'A';
foreach($row as $key => $cell) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
$col++;
}
$rowNumber++;
}
$objPHPExcel->getActiveSheet()->freezePane('A2');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $excelFilename . '.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
exit();
}
Если мой понимание правильное, вам нужно увеличить $ rowNumber, а не $ col. – Dhanendran
'$ headingsrow = $ result-> fetch_assoc();' не просто извлекает ваши заголовки, но также извлекает вашу первую строку данных, которую вы затем отбрасываете –