【问题标题】:Exporting html (mysql populated) table to excel file将html(填充mysql)表导出到excel文件
【发布时间】:2013-02-16 12:57:39
【问题描述】:

我正在尝试查询 mysql 数据库并在表中显示数据。那部分正在工作。目前,它被设置为显示 特定日期范围内的结果。

我现在想使用表格并制作一个按钮,让您可以将其导出到 Excel 文件。在我添加选择日期范围的选项之前,您可以导出到 Excel,但现在似乎第二个文件不知道我在说什么表。我尝试使用 POST 发送数据值并在另一页上重新查询。

当我单击按钮导出时,下载的 excel 文档是空的(尽管它有大小)。有什么帮助吗?

-----查询mysql---------

 <html><head><title>New Production Rejections</title></head></html>
    <?php 

    include("config.php");
    //get serial from submitted data
        //$serial = $_POST['sNumber'];
        //if the submitted data is empty
        $serial = $_POST['entryDate'];
    $dateEnd = $_POST['entryDate2'];
        //parse the serial from the link in tracker
    ?>
        <form method="post" action="<?php echo "queryNewProdRejections.php?"?>">
        Search between dates: (Format: YYYY-MM-DD)<input type='text' size='20' maxlength='20' name='entryDate'> - <input type='text' size='20' maxlength='20' name='entryDate2'>
        <input type="submit" value="Search Date Range"><br/></form>

    <?php


    //query based on approved date that is nothing, repaired date that is nothing, 
    //tech is a real tech, location that is not Revite (RVP), action was to replace, 
    //and the status is not (declined or skipped).

    $query = "SELECT *
    FROM `rma`
    WHERE `origin` NOT LIKE 'Field_failure'
    AND `origin` NOT LIKE 'DOA_at_Customer'
    AND `origin` NOT LIKE 'Sweden_Fail_VI'
    AND `entry` > '$serial' AND `entry` < '$dateEnd'";
    $data = mysql_query($query) or die(mysql_error());

    //Create a table with the array of data from repairs, based on the previous query

    echo "<table border='1'><tr><th>RMA</th><th>Product</th><th>Serial</th><th>Origin</th><th>Return To</th><th>Credit Num</th><th>Order</th><th>Entry Date</th><th>Tech</th><th>Traking Num</th></tr>";

    while($row = mysql_fetch_array($data)){ 
        print "<tr><td>".$row['intrma']."</td><td>".$row['product']."</td><td>".$row['serial']."</td><td>".$row['origin']."</td><td>".$row['retto']."</td><td>".$row['creditnum']."</td><td>".$row['ordernum']."</td><td>".$row['entry']."</td><td>".$row['tech']."</td><td>".$row['tracknum']."</td></tr>";
    }
    print "</table>";

    ?>
    <html>
    <form method="post" action="saveQueryToExcel.php">
    <input type='hidden' name='ent_1' value="<?php echo $_POST['entryDate']; ?>">
    <input type='hidden' name='ent_2' value="<?php echo $_POST['entryDate2']; ?>">
      <input type="submit" value="Save to Excel">
    </form>
    </html>

---------------打印到 Excel 文件 -- (saveQueryToExcel.php)

<html><head><title>New Production Rejections</title></head></html>

<?php
error_reporting(0);

$dateBeg=$_POST['ent_1'];
$dateEnd=$_POST['ent_2'];

//Connect to the database, repairs in maprdweb
include("config.php");

//query based on approved date that is nothing, repaired date that is nothing, 
//tech is a real tech, location that is not Revite (RVP), action was to replace, 
//and the status is not (declined or skipped).

$query = "SELECT *
FROM `rma`
WHERE `origin` NOT LIKE 'Field_failure'
AND `origin` NOT LIKE 'DOA_at_Customer'
AND `origin` NOT LIKE 'Sweden_Fail_VI'
AND `entry` > '$dateBeg' AND `entry` < '$dateEnd'";
$data = mysql_query($query) or die(mysql_error());

//Create a table with the array of data from repairs, based on the previous query
header('Content-type: application/vnd.ms-excel');

echo "<table border='1'><tr><th>RMA</th><th>Product</th><th>Serial</th><th>Origin</th><th>Return To</th><th>Credit Num</th><th>Order</th><th>Entry Date</th><th>Tech</th><th>Traking Num</th></tr>";

while($row = mysql_fetch_array($data)){ 
    print "<tr><td>".$row['intrma']."</td><td>".$row['product']."</td><td>".$row['serial']."</td><td>".$row['origin']."</td><td>".$row['retto']."</td><td>".$row['creditnum']."</td><td>".$row['ordernum']."</td><td>".$row['entry']."</td><td>".$row['tech']."</td><td>".$row['tracknum']."</td></tr>";
}
print "</table>";
?>

【问题讨论】:

  • 你应该告诉我们,你的问题是什么。
  • 谢谢,我错过了那部分。
  • 据我所知,excel 不适用于表格。只需创建一个 CSV 文件并用逗号分隔数据。您可以在 excel 中打开一个 csv 文件。
  • @John 实际上确实如此。像表格这样的基本 html 在 excel 中可以正常工作,您只会收到一条消息,说文件看起来格式不正确,但单击“确定”就可以了。
  • excel 将接受 html 表格作为输入,但您最好使用 PHPExcel 生成 NATIVE excel 文件。

标签: php html mysql export-to-excel


【解决方案1】:

PHPexcel 非常适合将数据导出到实际的 Excel 文档。

您似乎只是在生成一个带有结果的 HTML 表格。这不是 Excel 格式。

【讨论】:

    【解决方案2】:

    您应该使用相同的代码,而不是打印&lt;tr&gt; 行,而是将其发送到fputcsv。使用标准输出作为文件句柄。您需要设置正确的 html 标头,以便将输出作为 csv 发送,如本文所述:force file download

    【讨论】:

      【解决方案3】:

      看看这门课。它能够解决问题。

      https://github.com/GSTVAC/HtmlExcel

      $xls = new HtmlExcel();
      $xls->addSheet("Names", $names);
      $xls->headers();
      echo $xls->buildFile();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多