将 Table 转换为 CSV
Converting Table to CSV
我正在使用 str_get_html
http://simplehtmldom.sourceforge.net/ 将 HTML table 导出到 CSV。用户完成一个表单,相同的 table 显示在屏幕上。如果他们选中一个表单框,我希望它也能生成一个 CSV 文件供下载(除了在屏幕上显示 table)。
使用 ajax,我将 table 显示在一个空的 div 元素中。
<script type="text/javascript">
$(document).ready(function() {
var options = {target: '#output1'};
$('#completed').ajaxForm(options);});
</script>
几乎可以正常工作了。唯一的问题是它在 div 更新中显示 CSV 内容,而不是生成文件供下载。如果我删除 table 的屏幕显示并删除 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);
您需要使用 path/filename,而不是使用 "php://output"。现在,您正在告诉 php 写入输出缓冲区机制。
例如:
$fp = fopen("path/to/filename.csv", "w");
我正在使用 str_get_html
http://simplehtmldom.sourceforge.net/ 将 HTML table 导出到 CSV。用户完成一个表单,相同的 table 显示在屏幕上。如果他们选中一个表单框,我希望它也能生成一个 CSV 文件供下载(除了在屏幕上显示 table)。
使用 ajax,我将 table 显示在一个空的 div 元素中。
<script type="text/javascript">
$(document).ready(function() {
var options = {target: '#output1'};
$('#completed').ajaxForm(options);});
</script>
几乎可以正常工作了。唯一的问题是它在 div 更新中显示 CSV 内容,而不是生成文件供下载。如果我删除 table 的屏幕显示并删除 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);
您需要使用 path/filename,而不是使用 "php://output"。现在,您正在告诉 php 写入输出缓冲区机制。
例如:
$fp = fopen("path/to/filename.csv", "w");