用PHPExcel制作Excel文件,每列写两次
解决方法如下: 我只需要换一行用PHPExcel制作Excel文件,每列写两次,php,mysql,while-loop,phpexcel,Php,Mysql,While Loop,Phpexcel,解决方法如下: 我只需要换一行 while ($row = mysql_fetch_array($result)) { 到 我使用PHPExcel从mySQL数据库中提取数据来创建XLS文件。我正在写两个专栏:标题和视图。(标题是db表中的实际列,视图是每个标题在表中出现的次数计数) 数据写入XLS文件,问题是每列写入两次: |-------A-------B-------C-------D-------| 5--标题--|--视图---| 6---标题1----标题1----标题3----
while ($row = mysql_fetch_array($result)) {
到
我使用PHPExcel从mySQL数据库中提取数据来创建XLS文件。我正在写两个专栏:标题和视图。(标题是db表中的实际列,视图是每个标题在表中出现的次数计数) 数据写入XLS文件,问题是每列写入两次: |-------A-------B-------C-------D-------|
5--标题--|--视图---|
6---标题1----标题1----标题3----标题3-------|
7---标题2----标题2----标题6----标题6-------|
8---标题3----标题3----标题4----标题4-------| 如何修复此问题,使其每列显示一次 我的代码:
$sql = "
SELECT
titles.title,
COUNT(DISTINCT history.id) AS `count`
FROM
user_history titles
LEFT OUTER JOIN
user_history history
ON
titles.title = history.title
";
$sql .= "
GROUP BY
titles.title
ORDER BY
titles.title
";
$result = mysql_query($sql);
$headings = array('Title', 'Views');
if ($result = mysql_query($sql) or die(mysql_error())) {
$rowNumber = 5;
$col = 'A';
foreach($headings as $heading) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$heading);
$col++;
}
// Loop through the result set
$rowNumber = 6;
while ($row = mysql_fetch_array($result)) {
$col = 'A';
foreach($row as $cell) {
$objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
$col++;
}
$rowNumber++;
}
因为你的加入是无损的 您将获得两次冗余信息 只需对您的查询执行以下操作:
SELECT
titles.title,
COUNT(DISTINCT titles.id) AS `count`
FROM user_history titles
GROUP BY titles.title
ORDER BY titles.title;
如果您不需要任何特殊格式,您是否考虑过只编写一个CSV文件?@SimpleCoder-我确实需要特殊格式。关于如何为pdo执行此操作的任何建议似乎都是行获取方式?我做了PDO::FETCH_ASSOC:这对我很有效。
SELECT
titles.title,
COUNT(DISTINCT titles.id) AS `count`
FROM user_history titles
GROUP BY titles.title
ORDER BY titles.title;