首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么excel文件是用php创建的,与浏览器中的tabel不一样?

为什么excel文件是用php创建的,与浏览器中的tabel不一样?
EN

Stack Overflow用户
提问于 2014-04-22 05:52:54
回答 1查看 45关注 0票数 0

请帮助,我正在尝试将mysql表中的数据按城市排序为excel文件(kol_17)。守则如下:

代码语言:javascript
复制
$rslt = mysql_query("SELECT DISTINCT kol_17 AS bmcity FROM temp_table ORDER BY kol_17 ASC");
while ($rowgroup = mysql_fetch_array($rslt)) {
    $bm_city = $rowgroup['bmcity'];
    echo "<br>Event City: <b>$bm_city</b>";
    echo "<table border='1'>";
    echo "<tr>";
    echo "<td bgcolor='#C0C0C0'>Order Number</td>";
    echo "<td bgcolor='#C0C0C0'>Item Code</td>";
    echo "<td bgcolor='#C0C0C0'>Deposit</td>";
    echo "<td bgcolor='#C0C0C0'>Total</td>";
    echo "<td bgcolor='#C0C0C0'>Price</td>";
    echo "<td bgcolor='#C0C0C0'>Trx MSISDN</td>";
    echo "<td bgcolor='#C0C0C0'>Communication MSISDN</td>";
    echo "<td bgcolor='#C0C0C0'>BM City</td>";
    echo "<td bgcolor='#C0C0C0'>Se Area</td>";
    echo "<td bgcolor='#C0C0C0'>Type of Sale</td>";
    echo "</tr>";

    $objPHPExcel->setActiveSheetIndex(0);

    $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Order Number');
    $objPHPExcel->getActiveSheet()->SetCellValue('B1', 'Item Code');
    $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'DuiTRI');
    $objPHPExcel->getActiveSheet()->SetCellValue('D1', 'Total');
    $objPHPExcel->getActiveSheet()->SetCellValue('E1', 'Price');
    $objPHPExcel->getActiveSheet()->SetCellValue('F1', 'Trx MSISDN');
    $objPHPExcel->getActiveSheet()->SetCellValue('G1', 'Communication MSISDN');
    $objPHPExcel->getActiveSheet()->SetCellValue('H1', 'BM City');
    $objPHPExcel->getActiveSheet()->SetCellValue('I1', 'Se Area');
    $objPHPExcel->getActiveSheet()->SetCellValue('J1', 'Type of Sale');
    $result = mysql_query("SELECT kol_0, kol_5, kol_8, kol_9, kol_10, kol_14, kol_15, kol_17, kol_18, kol_20 from temp_table WHERE kol_17 = '$bm_city' AND kol_5 like '70%'");

    $colnum=1;                  
       while ($row = mysql_fetch_array($result)){
           echo "<tr>";
           echo "<td>" . $row['kol_0'] . "</td>";
           echo "<td>" . $row['kol_5'] . "</td>";
           echo "<td>" . $row['kol_8'] . "</td>";
           echo "<td>" . $row['kol_9'] . "</td>";
           echo "<td>" . $row['kol_10'] . "</td>";
           echo "<td>" . $row['kol_14'] . "</td>";
           echo "<td>" . $row['kol_15'] . "</td>";
           echo "<td>" . $row['kol_17'] . "</td>";
           echo "<td>" . $row['kol_18'] . "</td>";
           echo "<td>" . $row['kol_20'] . "</td>";
           echo "</tr>";
           $colnum++;
           $objPHPExcel->getActiveSheet()->SetCellValue('A'."$colnum", $row["kol_0"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('B'."$colnum", $row["kol_5"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('C'."$colnum", $row["kol_8"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('D'."$colnum", $row["kol_9"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('E'."$colnum", $row["kol_10"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('F'."$colnum", $row["kol_14"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('G'."$colnum", $row["kol_15"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('H'."$colnum", $row["kol_17"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('I'."$colnum", $row["kol_18"]);
           $objPHPExcel->getActiveSheet()->SetCellValue('J'."$colnum", $row["kol_20"]);
       }
       echo "</table>";

       $objPHPExcel->getActiveSheet()->setTitle('Upload');
       $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
       $sFileName = "preorder_".$rowgroup[0].".xlsx";
       $objWriter->save('upload/'.$sFileName);
}

结果,excel文件中仍然包含不应该包含的相同城市,但浏览器中是正确的。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-22 08:18:27

考虑一下您的代码逻辑。

  • 从数据库中获取第一城市
  • 从该城市的数据库中获取所有事件
  • 循环遍历所有城市事件
    • 假设第一城市有8个活动
    • 这将填充行2-9。

  • 为那个城市写文件
  • 从数据库中获取第二城市
  • 从该城市的数据库中获取所有事件
  • 循环遍历所有城市事件
    • 假设第二城市有5个活动
    • 这将填充第2-6行。

在这个阶段,第7行、第8行和第9行是什么?PHPExcel对象没有被告知任何行都应该被删除,所以它们仍然被填充到城市#1的事件6、7和8中。

要么需要清除从前一个城市添加到工作表中的所有数据,要么需要为每个城市创建一个新的PHPExcel对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23211436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档