diff --git a/components/date.inc b/components/date.inc
index 40d6ded..919fe4b 100644
--- a/components/date.inc
+++ b/components/date.inc
@@ -414,7 +414,7 @@ function _webform_csv_headers_date($component, $export_options) {
   $header = array();
   $header[0] = '';
   $header[1] = '';
-  $header[2] = $component['name'];
+  $header[2] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
   return $header;
 }
 
diff --git a/components/email.inc b/components/email.inc
index eb6acfa..a8942a1 100644
--- a/components/email.inc
+++ b/components/email.inc
@@ -273,7 +273,7 @@ function _webform_csv_headers_email($component, $export_options) {
   $header = array();
   $header[0] = '';
   $header[1] = '';
-  $header[2] = $component['name'];
+  $header[2] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
   return $header;
 }
 
diff --git a/components/file.inc b/components/file.inc
index 160119b..1f65347 100644
--- a/components/file.inc
+++ b/components/file.inc
@@ -467,7 +467,7 @@ function _webform_csv_headers_file($component, $export_options) {
   $header = array();
   // Two columns in header.
   $header[0] = array('', '');
-  $header[1] = array($component['name'], '');
+  $header[1] = array($export_options['header_keys'] ? $component['form_key'] : $component['name'], '');
   $header[2] = array(t('Name'), t('Filesize (KB)'));
   return $header;
 }
diff --git a/components/grid.inc b/components/grid.inc
index 955c526..5845dd4 100644
--- a/components/grid.inc
+++ b/components/grid.inc
@@ -365,7 +365,7 @@ function _webform_table_grid($component, $value) {
 function _webform_csv_headers_grid($component, $export_options) {
   $header = array();
   $header[0] = array('');
-  $header[1] = array($component['name']);
+  $header[1] = array($export_options['header_keys'] ? $component['form_key'] : $component['name']);
   $items = _webform_select_options_from_text($component['extra']['questions'], TRUE);
   $count = 0;
   foreach ($items as $key => $item) {
@@ -375,7 +375,7 @@ function _webform_csv_headers_grid($component, $export_options) {
       $header[1][] = '';
     }
     // The value for this option.
-    $header[2][] = $item;
+    $header[2][] = $export_options['header_keys'] ? $key : $item;
     $count++;
   }
 
diff --git a/components/hidden.inc b/components/hidden.inc
index 99e3210..aa4edea 100644
--- a/components/hidden.inc
+++ b/components/hidden.inc
@@ -160,13 +160,13 @@ function _webform_table_hidden($component, $value) {
 }
 
 /**
- * Implements _webform_csv_data_component().
+ * Implements _webform_csv_headers_component().
  */
 function _webform_csv_headers_hidden($component, $export_options) {
   $header = array();
   $header[0] = '';
   $header[1] = '';
-  $header[2] = $component['name'];
+  $header[2] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
   return $header;
 }
 
diff --git a/components/number.inc b/components/number.inc
index 8134b49..d2152bc 100644
--- a/components/number.inc
+++ b/components/number.inc
@@ -510,7 +510,7 @@ function _webform_csv_headers_number($component, $export_options) {
   $header = array();
   $header[0] = '';
   $header[1] = '';
-  $header[2] = $component['name'];
+  $header[2] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
   return $header;
 }
 
diff --git a/components/select.inc b/components/select.inc
index aeeb41d..55bac0c 100644
--- a/components/select.inc
+++ b/components/select.inc
@@ -705,10 +705,15 @@ function _webform_csv_headers_select($component, $export_options) {
 
   if ($component['extra']['multiple'] && $export_options['select_format'] == 'separate') {
     $headers[0][] = '';
-    $headers[1][] = $component['name'];
+    $headers[1][] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
     $items = _webform_select_options($component, TRUE, FALSE);
     if ($component['extra']['other_option']) {
-      $other_label = !empty($component['extra']['other_text']) ? check_plain($component['extra']['other_text']) : t('Other...');
+      if ($export_options['header_keys']) {
+        $other_label = $component['form_key'] . '_other';
+      }
+      else {
+        $other_label = !empty($component['extra']['other_text']) ? check_plain($component['extra']['other_text']) : t('Other...');
+      }
       $items[$other_label] = $other_label;
     }
     $count = 0;
@@ -730,7 +735,7 @@ function _webform_csv_headers_select($component, $export_options) {
   else {
     $headers[0][] = '';
     $headers[1][] = '';
-    $headers[2][] = $component['name'];
+    $headers[2][] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
   }
   return $headers;
 }
diff --git a/components/textarea.inc b/components/textarea.inc
index 9dd2387..03e370d 100644
--- a/components/textarea.inc
+++ b/components/textarea.inc
@@ -205,7 +205,7 @@ function _webform_csv_headers_textarea($component, $export_options) {
   $header = array();
   $header[0] = '';
   $header[1] = '';
-  $header[2] = $component['name'];
+  $header[2] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
   return $header;
 }
 
diff --git a/components/textfield.inc b/components/textfield.inc
index 2a04061..896c52c 100644
--- a/components/textfield.inc
+++ b/components/textfield.inc
@@ -242,7 +242,7 @@ function _webform_csv_headers_textfield($component, $export_options) {
   $header = array();
   $header[0] = '';
   $header[1] = '';
-  $header[2] = $component['name'];
+  $header[2] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
   return $header;
 }
 
diff --git a/components/time.inc b/components/time.inc
index 30a9053..5502864 100644
--- a/components/time.inc
+++ b/components/time.inc
@@ -377,7 +377,7 @@ function _webform_csv_headers_time($component, $export_options) {
   $header = array();
   $header[0] = '';
   $header[1] = '';
-  $header[2] = $component['name'];
+  $header[2] = $export_options['header_keys'] ? $component['form_key'] : $component['name'];
   return $header;
 }
 
diff --git a/includes/webform.report.inc b/includes/webform.report.inc
index 6d660e3..9705371 100644
--- a/includes/webform.report.inc
+++ b/includes/webform.report.inc
@@ -341,6 +341,17 @@ function webform_results_download_form($form, &$form_state, $node) {
     ),
   );
 
+  $form['header_keys'] = array(
+    '#type' => 'radios',
+    '#title' => t('Column header format'),
+    '#options' => array(
+      0 => t('Label'),
+      1 => t('Field Key'),
+    ),
+    '#default_value' => isset($form_state['values']['header_keys']) ? $form_state['values']['header_keys'] : 0,
+    '#description' => t('Choose whether to show the label or field key in each column header.'),
+  );
+
   $form['select_options'] = array(
     '#type' => 'fieldset',
     '#title' => t('Select list options'),
@@ -516,6 +527,7 @@ function webform_results_download_form_submit(&$form, &$form_state) {
   $options = array(
     'delimiter' => $form_state['values']['delimiter'],
     'components' => array_keys(array_filter($form_state['values']['components'])),
+    'header_keys' => $form_state['values']['header_keys'],
     'select_keys' => $form_state['values']['select_keys'],
     'select_format' => $form_state['values']['select_format'],
     'range_type' => $form_state['values']['range']['range_type'],
@@ -692,6 +704,7 @@ function webform_results_export($node, $format = 'delimited', $options = array()
     $options = array(
       'delimiter' => variable_get('webform_csv_delimiter', '\t'),
       'components' => array_merge(array_keys($submission_information), array_keys(webform_component_list($node, 'csv', TRUE))),
+      'header_keys' => 0,
       'select_keys' => 0,
       'select_format' => 'separate',
       'range_type' => 'all',
@@ -716,8 +729,16 @@ function webform_results_export($node, $format = 'delimited', $options = array()
   $header[2] = $header[1] = $header[0] = count($submission_information) ? array_fill(0, count($submission_information), '') : array();
   if (count($submission_information)) {
     $header[0][0] = $node->title;
-    $header[1][0] = t('Submission Details');
-    foreach (array_values($submission_information) as $column => $label) {
+
+    if ($options['header_keys']) {
+      $header[1][0] = t('submission_details');
+      $submission_information_headers = array_keys($submission_information);
+    }
+    else {
+      $header[1][0] = t('Submission Details');
+      $submission_information_headers = array_values($submission_information);
+    }
+    foreach ($submission_information_headers as $column => $label) {
       $header[2][$column] = $label;
     }
   }
diff --git a/webform.api.php b/webform.api.php
index 4803596..e1082a0 100644
--- a/webform.api.php
+++ b/webform.api.php
@@ -870,7 +870,7 @@ function _webform_table_component($component, $value) {
 function _webform_csv_headers_component($component, $export_options) {
   $header = array();
   $header[0] = array('');
-  $header[1] = array($component['name']);
+  $header[1] = array($options['header_keys'] ? $component['form_key'] : $component['name']);
   $items = _webform_component_options($component['extra']['questions']);
   $count = 0;
   foreach ($items as $key => $item) {
