PHP MySQL 到 PHPExcel 没有显示数据

PHP MySQL to PHPExcel is not showing data

/* 它可以工作但是当我打开 excel sheet 它不工作所以我删除了 else 语句中的 echo 和整个其他所以它工作但没有将数据打印到 sheet */

include_once 'PHPExcel.php';
$sheet = new PHPExcel();


$servername =
$username = 
$password =
$dbname = 
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT firstname, lastname, phonenumber FROM people where answer='true' LIMIT ".$start.",10 ";

$result = $conn->query($sql);


if ($result->num_rows > 0) {
        // output data of each row
        $activeSheet=$sheet->getActiveSheet();
        while($row = $result->fetch_assoc()) {

        $activeSheet->setCellValue('A1',' $row["firstname"]');
        $activeSheet->setCellValue('B1','$row["lastname"]');
        $activeSheet->setCellValue('C1','$row["phonenumber"]');
        }
    } else {
        echo "0 results";
}
$conn->close();         
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename="report.xlsx"');
header('Cache-Control: max-age=0');

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

两件事:

在此代码中

$activeSheet->setCellValue('A1',' $row["firstname"]');

语句,你不应该在 $row 部分使用任何引号,删除它们:

$activeSheet->setCellValue('A1', $row["firstname"]);

此外,您的 else 子句在 header 之前输出数据,导致发送的数据不正确。删除 else。如果没有数据,您最终会得到一个空的 Excel 文件。

最后,您一遍又一遍地将所有数据放入相同的单元格中。使用变量递增到行号:

$i = 1;
while ($row = ...) {
    ...
    $activeSheet->setCellValue('A'+$i, $row["firstname"]);
    ...
    $i++;
}