使用javascript和PHP将HTML表导出为CSV

时间:2018-02-05 10:25:43

标签: javascript php html csv

我希望能够将HTML表导出到csv文件。请参阅以下代码:

HTML表格:

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8"> 
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> </script>
        <script type="text/javascript" src="function.js"> </script>
    </head>
    <body>
        <div class="dataExport">
            <button id='export' type="button">Export</button>
        </div>

        <table class="analysisTable">
            <thead>
                <tr>
                    <th>First name</th>
                    <th>Last name</th>
                    <th>Age</th>
                    <th>Sex</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Jane</td>
                    <td>Doe</td>
                    <td>19</td>
                    <td>F</td>
                <tr>
                    <td>John</td>
                    <td>Doe</td>
                    <td>41</td>
                    <td>M</td>
            </tbody>
        </table>
    </body>
</html>

function.js

$( document ).ready(function() {
    $("#export").click(function(){
        var myTableArray = [];
        $("table.analysisTable tr").each(function() { 
            var arrayOfThisRow = [];
            var tableData = $(this).find('td');
            if (tableData.length > 0) {
                tableData.each(function() { 
                    arrayOfThisRow.push( $(this).text() ); 
                });
                myTableArray.push( arrayOfThisRow );
            }
        });

        $.ajax({
            type: "POST", 
            url: "test_export.php", 
            data: { data: JSON.stringify(myTableArray) }, 
            cache: false,
                response: function(response) {
            console.log("Response: " + response); 
            }, 
            success: function(success) { 
                console.log("Succes: " + success); 
            }, 
            error: function(error){
                console.log("Error: " + error);
            }
        }); 
    });
});

export.php

<?php
    header('Content-Encoding: UTF-8');
    header('Content-Type: application/excel; charset=UTF-8');
    header('Content-Disposition: attachment; filename="export.csv"');

    $fp = fopen('php://output', 'w') or die ("fopen failed");

    $array = json_decode($_POST['data']);

    foreach ($array as $row){
        $row = array_map("utf8_decode", $row);
        //print_r ($row);
        fputcsv($fp, $row, ';');
    };

    fclose($fp);
?>

单击按钮时,此代码会正确解析HTML表的内容,但会将所有内容打印到控制台:

Succes: Jane;Doe;19;F
John;Doe;41;M

我已经在这里和其他地方搜索过,但我无法弄清楚如何说服php脚本编写创建csv文件。我在这里做错了吗?

编辑: 我最终想要实现的是:我想从HTML表中获取数据(我想通过使用javascript),在PHP中使用这些数据进行进一步处理(数据库内容)并将最终结果下载为一个csv文件。

0 个答案:

没有答案