将表转换为CSV

时间:2016-10-05 14:34:09

标签: php ajax csv export-to-csv

我使用str_get_html http://simplehtmldom.sourceforge.net/将HTML表格导出为CSV格式。用户完成表单并在屏幕上显示相同的表。如果他们检查表单框,我希望它还生成一个CSV文件供下载(除了在屏幕上显示表格)。

使用ajax,我将表显示在空的div元素中。

<script type="text/javascript">
    $(document).ready(function() {  
    var options = {target: '#output1'}; 
    $('#completed').ajaxForm(options);});  
</script>

它几乎正常工作。唯一的问题是它在div更新中显示CSV内容,而不是生成要下载的文件。如果我删除了表格的屏幕显示并删除了ajax功能,它会完美地生成CSV文件。有人可以帮助我使用下面的代码,以便生成一个文件供下载吗?

    include 'simple_html_dom.php';

    $html = str_get_html($table);
    header('Content-type: application/ms-excel');
    header('Content-Disposition: attachment; filename=sample.csv');

    $fp = fopen("php://output", "w");

    foreach($html->find('tr') as $element)
    {
        $td = array();
        foreach( $element->find('th') as $row)  
        {
            $td [] = $row->plaintext;
        }
        fputcsv($fp, $td);

        $td = array();
        foreach( $element->find('td') as $row)  
        {
            $td [] = $row->plaintext;
        }
        fputcsv($fp, $td);
    }

    fclose($fp);

1 个答案:

答案 0 :(得分:1)

您需要使用路径/文件名,而不是使用&#34; php:// output&#34;。现在,你要告诉php写入输出缓冲机制。

例如:

<?php
                    if(isset($_COOKIE['LoggedIn']) && !empty($_COOKIE['LoggedIn'])) {
                    echo "<li><a href=\"#\" action=\"setcookie(\"LoggedIn\", \"\", time(), \"/\");\">Log Out</a></li>";
                    } else {
                        echo "<li><a href=\"login.php\">Log in</a></li>";
                    }
                ?>