drupal 7: создать файл xls с массовой операцией просмотров

Я пытаюсь сгенерировать файл 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 {

}
}

}

Это работает довольно хорошо, когда имеется только один узел, но когда их несколько, создается новый файл для каждого, что тоже хорошо, но моя цель — иметь один файл для всех узлов. Это были дни, и я действительно надеюсь, что кто-то направит меня в правильном направлении.

заранее спасибо

0

Решение

Вот решение с помощью Просмотры модуль, 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" />');
});

Если вы выполните все эти шаги правильно, я думаю, что вы сделали с:

  • Чтобы экспортировать все строки
  • Чтобы экспортировать отфильтрованные строки
  • Чтобы экспортировать определенные строки

Я надеюсь, что это поможет вам или, по крайней мере, даст вам представление.

Спасибо

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]