我使用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);
答案 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>";
}
?>