我正在尝试使用以下代码在action_info
函数中使用PHPExcel模块生成excel文件:
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 :(得分:0)
这是使用views模块,views_data_export模块,2行PHP代码和一些jQuery行的解决方案。
请按以下步骤操作:
第一次安装views
和views_data_export
个模块
第二次(a)创建视图页面和数据导出this video 将帮助您根据数据导出数据 过滤器(S)
第二个(b)请勿忘记在用于获取NID的views page
中添加 nid字段
第二个(c)现在,再创建一个视图数据导出(如果需要,再创建starts here)并创建不同于第一个的导出PATH数据导出(第2步(a)中已创建)但请记住,您不必更新DATA EXPORT SETTINGS下的Attach to
选项部分,看起来应该是Attach to: none
。
第二(d)现在,在视图中添加 nid 作为上下文过滤器,然后选择提供默认值 = 来自网址的内容ID like this并选中Allow multiple values
like this
第3次如果您有视图页,请在template.php
OR 顶部的某处添加两行PHP代码已经创建(顺便说一下,我用名为views-view--export-multiple-rows--page.tpl.php
的tpl完成了它。)
if($_SERVER['REQUEST_METHOD'] == 'POST') {
drupal_goto("export_selected/".implode(',', $_POST['export']));
}
第4次在JS文件中添加以下jQuery代码,该文件将在此页面上呈现,如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" />');
});
如果你正确地遵循了所有这些步骤,我相信你已经完成了:
我希望这会对你有帮助,或者至少可以给你一个想法。
由于