将Mysql表结果导出为Excel,CSV或PDF

时间:2014-10-31 06:46:57

标签: php mysql

我有一个从mysql数据库生成的报告,但我希望用户能够将其导出到excel或pdf文件。我需要帮助。请参阅下面的代码:

    <h2>Staff Register</h2>
       <table align="justify" border="1" cellspacing="0" cellpadding="0" hspace="5px" vspace="5px">

        <tr>
        <th nowrap="nowrap"><div align="justify">Reg Date</div></th>
        <th nowrap="nowrap"><div align="justify">Staff No</div></th>
        <th nowrap="nowrap"><div align="justify">Surname</div></th>
        <th nowrap="nowrap"><div align="justify">Firstname </div></th>
         <th nowrap="nowrap"><div align="justify">Othername </div></th>
        <th nowrap="nowrap"><div align="justify">Phone No</div></th>
        <th nowrap="nowrap"><div align="justify">Sex</div></th>
        <th nowrap="nowrap"><div align="justify">Age </div></th>
        <th nowrap="nowrap"><div align="justify">Home Address </div></th>
        <th nowrap="nowrap"><div align="justify">E Mail </div></th>
        <th nowrap="nowrap"><div align="justify">Kin Name </div></th>
         <th nowrap="nowrap"><div align="justify">Kin Add </div></th>
          <th nowrap="nowrap"><div align="justify">Kin Phone </div></th>
           <th nowrap="nowrap"><div align="justify">Marital Status </div></th>
       </tr>

   <?php 
   // Perform Inspection 
    $confirm_select = "SELECT * FROM staff_tab  WHERE (status=1) ORDER BY staffno ASC";

    $query=$connection->query($confirm_select);

     while($result=mysqli_fetch_array($query)){
        echo "<tr>";
         echo "<td align='justify' nowrap='nowrap'>".$result['reg_date']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['staffno']."</td>";
         echo "<td align='justify' nowrap='nowrap'>".$result['surname']."</td>";
         echo "<td align='justify' nowrap='nowrap'>".$result['firstname']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['othername']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['mobile']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['sex']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['age']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['homeadd']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['emailadd']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['nextkin']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['kinadd']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['kinphone']."</td>";
        echo "<td align='justify' nowrap='nowrap'>".$result['marital_status']."</td>";

    }
    //to get total row count
    $res =$connection->query("SELECT staffno FROM staff_tab WHERE status=1");
    $pat= ($connection->affected_rows);
?>
</table>

//将此表格导出为Excel,CSV或PDF格式的代码。

2 个答案:

答案 0 :(得分:0)

只需制作一个像这样的单独的php文件

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="filename.csv"');

$f = fopen('php://output', 'w');

$confirm_select = "SELECT * FROM staff_tab  WHERE (status=1) ORDER BY staffno ASC";
$query=$connection->query($confirm_select);

while($result=mysqli_fetch_array($query)){
    fputcsv( $f, $result );
}

当然,您必须先连接到数据库。并将其链接到一个按钮/表单或者你有什么,我会做一个iframe等。

仅供参考。因为它的使用不足。

http://php.net/manual/en/wrappers.php.php

答案 1 :(得分:0)

我发现这是从解决另一个人问题的问题的最佳答案。它完美地运作

<?php
    require_once("/includes/session.php");
     require_once("/includes/db_connection.php");
     require_once("/includes/functions.php");
    // Table Name that you want
    // to export in csv
    $ShowTable = "staff_tab";
     $today=date("dmY");
    $FileName = "StaffRecord".$today.". csv";
    $file = fopen($FileName,"w");

    $sql = mysqli_query($connection,("SELECT * FROM $ShowTable LIMIT 500"));
    $row = mysqli_fetch_assoc($sql);
    // Save headings alon
    $HeadingsArray=array();
    foreach($row as $name => $value){
    $HeadingsArray[]=$name;
    }
    fputcsv($file,$HeadingsArray);
    // Save all records without headings

    while($row = mysqli_fetch_assoc($sql)){
    $valuesArray=array();
    foreach($row as $name => $value){
    $valuesArray[]=$value;
    }
    fputcsv($file,$valuesArray);
    }
    fclose($file);

    header("Location: $FileName");

    echo "Complete Record saves as CSV in file: <b style=\"color:red;\">$FileName</b>";
    ?>