【发布时间】:2014-10-02 19:53:43
【问题描述】:
我有一些 SQL 数据想要使用 PHPExcel 传递给 Excel 文档。
有3张桌子:
-
书籍:
1.1 bookID
1.2 书名
-
标签:
2.1 标记ID
2.2 标记名称
-
Post_Tags:
3.1 身份证
3.2 标记ID
3.3 bookID
我希望标签位于 xls 工作表的第二列,以逗号分隔。所以这里我在一个while循环中有一个while循环。
问题:
在生成的excel表格中,并不是所有书的标签都列在每列B的单元格中,而只有一个标签。
任何想法为什么?在此先感谢:)
require_once "includes/config.php";
require_once "includes/functions.php";
require_once 'phptoxls/PHPExcel.php';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
$F = $objPHPExcel -> getActiveSheet();
/* START: RECORDS */
$line = 2;
$query = mysql_query('SELECT * FROM `books`') or die(mysql_error());
while($row = mysql_fetch_assoc($query)){
$bookID = $row['bookID'];
$bookName = $row['bookName'];
$query2 = mysql_query('SELECT * FROM `books`
INNER JOIN `post_tags`
ON post_tags.bookID = books.bookID
INNER JOIN `tags`
ON tags.tagID = post_tags.tagID
WHERE books.bookID = "'.$bookID.'"') or die(mysql_error());
if(mysql_num_rows($query2) > 0){
$rowNum = mysql_num_rows($query2);
$i = 1;
while($row1 = mysql_fetch_assoc($query2)){
$tags = $row1['tagName'];
if($i < $rowNum){
$tags .= ', ';
}
}
}
$F -> setCellValue('A'.$line, $bookName)
-> setCellValue('B'.$line, $tags);
++$line;
}
/* END: RECORDS */
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="books.xls');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
【问题讨论】: