在PHP excel上打印variables

我想从数据库中获取数据并将其保存为excel文件。 我到目前为止(创build连接和新的phpexcel对象):

$conn->set_charset('utf8_unicode_ci');//if not by default // Create new PHPExcel object $objPHPExcel = new PHPExcel(); $F = $objPHPExcel->getActiveSheet(); 

然后我从数据库中获取数据:

 // 1.Get data // data for final table // format is [username][projectNo] => [process1, process2, ..., processN] $result = []; // map project no to its title $projectNoToTitle = []; $sql = ' SELECT uid, username FROM `user` ORDER BY username '; $query = mysqli_query($conn, $sql); // for each user while ($data = mysqli_fetch_assoc($query)) { $sql2 = ' SELECT a.* FROM ( ( -- select pairs project - leader SELECT p.projectNo, p.title, CONCAT(pr.process, "(ld)") AS process FROM project p LEFT JOIN proc_leader pr ON p.projectNo = pr.projectNo AND pr.proc_leader = "' . mysqli_real_escape_string($conn, $data['username']) . '" ) -- union all means we union result of queries, which have structure -- and don\'t remove duplicates (it\'s faster than UNION and -- more logical because in our sittuation it won\'t be any duplicates) UNION ALL ( -- select pairs project - checker SELECT p.projectNo, p.title, CONCAT(pch.process, "(chk)") AS process FROM project p LEFT JOIN proc_checker pch ON p.projectNo = pch.projectNo AND pch.proc_checker = "' . mysqli_real_escape_string($conn, $data['username']) . '" ) UNION ALL ( -- select pairs project - checker SELECT p.projectNo, p.title, CONCAT(pch.process, "(staff)") AS process FROM project p LEFT JOIN proc_staff pch ON p.projectNo = pch.projectNo AND pch.proc_staff = "' . mysqli_real_escape_string($conn, $data['username']) . '" ) ) AS a ORDER BY a.projectNo '; $query2 = mysqli_query($conn, $sql2); // for each project => process pair of user while ($data2 = mysqli_fetch_assoc($query2)) { $username = $data['username']; $projectNo = $data2['projectNo']; $projectTitle = $data2['title']; $process = $data2['process']; $projectNoToTitle[$projectNo] = $projectTitle; if (!isset($result[$username])) { $result[$username] = []; } if (!isset($result[$username][$projectNo])) { $result[$username][$projectNo] = []; } if ($process) { $result[$username][$projectNo][] = $process; } } } 

然后我想将收到的数据打印到Excel表格中:

 $Letter='B'; $Number=2; $F = $objPHPExcel->createSheet(); //Setting index when creating $objPHPExcel->setActiveSheetIndex(1); // 2. Output data if ($result) { // output body $body = ''; foreach ($result as $username => $usernameData) { $row = '' . htmlspecialchars($username) . ''; $F->setCellValue('A'.$Number, $row); foreach ($projectNoToTitle as $projectNo => $projectTitle) { $r = isset($usernameData[$projectNo]) ? implode(', ', $usernameData[$projectNo]) : 'N/A'; $row .= '' . htmlspecialchars($r) . ''; } $body .= $row; } $F->setCellValue('A'.'1', 'username'); $F->fromArray($projectNoToTitle, null, 'B1'); $F->getRowDimension($Number)->setRowHeight(20); $F->getColumnDimension($Letter)->setWidth(40); $F->getColumnDimension('A')->setWidth(30); ++$Number; ++$Letter; // Redirect output to a client's web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="HeadCount.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; } 

我试图打印body但它给了我一个单元格中的所有信息。 喜欢 这里 如果我只打印row我只有一个 名称 我怎样才能打印所有必要的数据? 我需要这样的 这个 但在Excel中。 我知道我可以节省表,我得到了Excel,但事情是我将需要添加更多的信息后,所以我想用phpexcel做到这一点。 谢谢你的帮助