将表格转换为CSV


                    

我正在使用 str_get_html </ code> http://simplehtmldom.sourceforge.net/将HTML表格导出为CSV。 用户填写一个表格,并在屏幕上显示相同的表格。 如果他们选中了一个表单框,我希望它也生成一个CSV文件供下载(除了在屏幕上显示表格外)。</ p>

使用ajax,我将表显示在一个空的div元素中。</ p>

  <br>
     $(document).ready(function(){<br>
     var options = {target:&#39;#output1&#39;};<br>
     $(&#39;#completed&#39;)。ajaxForm(options);});<br>
 &lt;/ script&gt;<br>
 &lt;/ code&gt; &lt;/ pre&gt;</p>

<p><p>快要工作了。 唯一的问题是,它会在div更新中显示CSV内容,而不是生成要下载的文件。 如果我删除表格的屏幕显示并删除ajax功能,它将完美地生成CSV文件。 有人可以帮我处理下面的代码,以便它生成供下载的文件吗?&lt;/ p&gt;</p>

<p><pre> <code>包括&#39;simple_html_dom.php&#39;;</p>

<p>     $ html = str_get_html($ table);<br>
     header(&#39;Content-type:application / ms-excel&#39;);<br>
     header(&#39;Content-Disposition:附件; filename = sample.csv&#39;);</p>

<p>     $ fp = fopen(“ php:// output”,“ w”);</p>

<p>     foreach($ html-&gt; find(&#39;tr&#39;)作为$ element)<br>
     {<br>
         $ td = array();<br>
         foreach($ element-&gt; find(&#39;th&#39;)as $ row)<br>
         {<br>
             $ td [] = $ row-&gt;明文;<br>
         }<br>
         fputcsv($ fp,$ td);</p>

<p>         $ td = array();<br>
         foreach($ element-&gt; find(&#39;td&#39;)as $ row)<br>
         {<br>
             $ td [] = $ row-&gt;明文;<br>
         }<br>
         fputcsv($ fp,$ td);<br>
     }</p>

<p>     fclose($ fp);<br>
 &lt;/ code&gt; &lt;/ pre&gt;<br>
     &lt;/ div&gt;</p>

展开原文

原文

I'm using str_get_html http://simplehtmldom.sourceforge.net/ to export an HTML table to CSV. The user completes a form and the same table displays on screen. If they check a form box, I would like it to also generate a CSV file for download (in addition to displaying the table on screen).

Using ajax, I have the table being displayed in an empty div element.

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

It's almost working. The only problem is that it displays the CSV content in the div update, rather than generating a file for download. If I remove the on-screen display of the table and remove the ajax functionality, it generates the CSV file perfectly. Can someone help me with the code below so that it will generate a file for download?

    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个回答


您需要使用路径/文件名,而不是使用“ php:// output”。 现在,您正在告诉php写入输出缓冲区机制。</ p>

例如:</ p>

  $ fp = fopen(“ path / to / filename.csv”,“ w”);
</ code> </ pre>
     </ div>

展开原文

原文

Instead of using "php://output", you need to use a path/filename. Right now, you are telling php to write to the output buffer mechanism.

For example:

$fp = fopen("path/to/filename.csv", "w");

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐