#php #ajax #csv #export-to-csv
#php #ajax #csv #экспорт в 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>
Это почти работает. Единственная проблема заключается в том, что он отображает содержимое CSV в обновлении div, а не генерирует файл для загрузки. Если я удалю отображение таблицы на экране и удалю функциональность 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:
Вместо использования «php: // output» вам нужно использовать путь / имя файла. Прямо сейчас вы указываете php на запись в механизм выходного буфера.
Например:
$fp = fopen("path/to/filename.csv", "w");