Я пытаюсь сгенерировать файл Excel с помощью модуля PHPExcel в action_info
работать со следующим кодом:
function mymodule_export_data_action(&$object, $context = array()) {
if (isset($object->uid)) {
$uid = $object->uid;
}
elseif (isset($context['uid'])) {
$uid = $context['uid'];
}
if ($uid) {
module_load_include('inc', 'phpexcel');
$filename = 'mymodule--download-' . uniqid() . '.xls';
$filepath = variable_get('file_public_path', conf_path() . '/files') . '/' . $filename;
$result = phpexcel_export(
array('Nom', 'Prenom', 'Date de naissance', 'Adresse email'),
array(
array('A1', 'B1'),
array('A2', 'B2'),
), $filepath);
if ($result === PHPEXCEL_SUCCESS) {
drupal_set_message(l('Click to download', $filepath));
}
else {
}
}
}
Это работает довольно хорошо, когда имеется только один узел, но когда их несколько, создается новый файл для каждого, что тоже хорошо, но моя цель — иметь один файл для всех узлов. Это были дни, и я действительно надеюсь, что кто-то направит меня в правильном направлении.
заранее спасибо
Вот решение с помощью Просмотры модуль, views_data_export модуль, 2 строки PHP-кода и несколько строк jQuery.
Просто следуйте этим шагам:
первый устанавливать views
а также views_data_export
модули
2-й (а) Создать страницу просмотра и экспорт данных, это видео
поможет вам экспортировать данные в соответствии с
фильтр (ы)
2-й (б) Не забудьте добавить нид поле в views page
который будет использовать для получения NID
2-й (с) Теперь создайте экспорт данных еще одного представления (Это снова начинается здесь, если вам нужно) и создайте экспорт PATH, отличный от первого экспорта данных (созданный на шаге 2 (а)) но помните, что вам не нужно обновлять Attach to
вариант под НАСТРОЙКИ ЭКСПОРТА ДАННЫХ раздел должен выглядеть так Attach to: none
,
2-й (д) Теперь добавьте нидь как контекстный фильтр в представлениях и выберите Укажите значение по умолчанию знак равно Идентификатор контента из URL как это и установите флажок Allow multiple values
как это
третий Добавьте две строки кода PHP где-то в template.php
ИЛИ ЖЕ верхняя часть чая страница просмотров если вы уже создали (кстати, я сделал это с TPL с именем как views-view--export-multiple-rows--page.tpl.php
).
if($_SERVER['REQUEST_METHOD'] == 'POST') {
drupal_goto("export_selected/".implode(',', $_POST['export']));
}
четвёртая Добавьте ниже JQuery-код в JS-файл, который будет отображаться на этой странице, например: custom.js
и ** изменить классы **
jQuery(function($){
jQuery('.feed-icon a:first-child').text('Export All');
jQuery('td.views-field-nid').each(function() { //class of NID added in step 2nd (b)
var t = jQuery(this);
var id = jQuery.trim(t.text());
t.html('<input type="checkbox" name="export[]" value="" />');
t.find('input').val(id);
});
//Below .view-export-multiple-rows class is of views class (main views page)
$('.view-export-multiple-rows').wrap('<form method="POST" class="export-form"></form>');
$('.export-form .view-content').append('<input type="submit" value="Export Selected" name="submit" />');
});
Если вы выполните все эти шаги правильно, я думаю, что вы сделали с:
Я надеюсь, что это поможет вам или, по крайней мере, даст вам представление.
Спасибо
Других решений пока нет …