We've tried entity forms for a project and the client wants that collected data in a spreadsheet. (This was never a mentioned spec before the project.)
Is this possible? Is there a way to download entity form submissions to a CSV or spreadsheet?
Drupal Answers is a question and answer site for Drupal developers and administrators. It only takes a minute to sign up.
Sign up to join this communityWhen enabling Views data export and Views Bulk Operations (VBO) modules, the export of all submission should be visible in form of feed icons on the submission list (as per entityform.views_default.inc
file).
Although if you'd like to implement selective submission export, you need to modify the entityforms
view, for example:
/**
* Implements hook_views_default_views_alter().
*/
function MYMODULE_views_default_views_alter(&$views) {
if (module_exists('entityform') && module_exists('views_bulk_operations')) {
/* Display: Master */
$handler =& $views['entityforms']->display['default']->handler;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['display_type'] = '1';
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['enable_select_all_pages'] = 1;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['row_clickable'] = 1;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['force_single'] = 0;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_operations']['action::views_bulk_operations_argument_selector_action']
= array(
'selected' => 1,
'skip_confirmation' => 1,
'override_label' => 1,
'label' => 'Export to CSV',
'settings' => array(
'url' => 'entityform-submissions/downloads/[current-page:arg:4]/csv',
),
);
/* Display: CSV Data export */
$handler =& $views['entityforms']->display['autofields_csv']->handler;
/* Contextual filter: Entityform Submission: Entityform submission ID */
$handler->display->display_options['arguments']['entityform_id']['id'] = 'entityform_id';
$handler->display->display_options['arguments']['entityform_id']['table'] = 'entityform';
$handler->display->display_options['arguments']['entityform_id']['field'] = 'entityform_id';
$handler->display->display_options['arguments']['entityform_id']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['entityform_id']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['entityform_id']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['entityform_id']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['entityform_id']['break_phrase'] = TRUE;
$handler->display->display_options['path'] = 'entityform-submissions/downloads/%/csv/%';
// $handler->display->display_options['displays'] = array(); // Removes feed icon.
/* Display: XML Data export */
$handler =& $views['entityforms']->display['autofields_xml']->handler;
// $handler->display->display_options['displays'] = array(); // Removes feed icon.
}
}
Place above code in your custom module, e.g. in views/MYMODULE.views.inc
. Then you need these extra hooks in your .module
file (to invoke your view changes and make support for tokens for your VBO URL):
/**
* Implements hook_views_api().
*/
function MYMODULE_views_api() {
return array(
'api' => 3,
'path' => drupal_get_path('module', 'MYMODULE') . '/views',
);
}
/**
* Implements hook_drupal_goto_alter().
*/
function MYMODULE_drupal_goto_alter(&$path, &$options, &$http_response_code) {
if (module_exists('token') && user_access('administer nodes') && strpos($path, '[') !== FALSE) {
// Required for entityform export pages.
// E.g. /admin/structure/entityform_types/manage/%/submissions.
$path = token_replace($path);
}
}