1

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?

2 Answers 2

3

You can use Views Data Export: For downloading submissions, Entityform support that by default.

1
  • How do I bulk download entityform submissions? Jul 13, 2017 at 18:31
0

When 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);
  }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.