diff --git a/plugins/views_data_export_plugin_style_export.inc b/plugins/views_data_export_plugin_style_export.inc
index 17c4742..d785e55 100644
--- a/plugins/views_data_export_plugin_style_export.inc
+++ b/plugins/views_data_export_plugin_style_export.inc
@@ -36,6 +36,10 @@ class views_data_export_plugin_style_export extends views_plugin_style {
       'default' => FALSE,
       'translatable' => FALSE,
     );
+    $options['excel_type'] = array(
+      'default' => 'excel5',
+      'translatable' => FALSE,
+    );
     return $options;
   }
 
@@ -50,6 +54,17 @@ class views_data_export_plugin_style_export extends views_plugin_style {
    * None.
    */
   function options_form(&$form, &$form_state) {
+
+    if ('views_data_export_xls_phpexcel' == $this->plugin_name) {
+      $form['excel_type'] = array(
+        '#type' => 'radios',
+        '#title' => t('Excel type'),
+        '#default_value' => $this->options['excel_type'],
+        '#description' => t('Excel 5 is a legacy format from period 97-2004 (compatible with Feeds XLS for example). The newer format is Excel2007 (XSLX) in which content is in XML and zipped.'),
+        '#options' => array('excel5' => 'Excel 5 (XSL)', 'excel2007' => 'Excel 2007 (XSLX)')
+      );
+    }
+
     $form['attach_text'] = array(
       '#type' => 'textfield',
       '#title' => t('Attach text'),
@@ -239,6 +254,11 @@ class views_data_export_plugin_style_export extends views_plugin_style {
       }
     }
 
+    if ('views_data_export_xls_phpexcel' == $this->plugin_name) {
+      $output = $this->render_body();
+      return $output;
+    }
+
     if (isset($this->options['filename']) && !empty($this->options['provide_file'])) {
       $filename = strtr(
         $this->options['filename'],
diff --git a/theme/views_data_export.theme.inc b/theme/views_data_export.theme.inc
index e98341e..248ab61 100644
--- a/theme/views_data_export.theme.inc
+++ b/theme/views_data_export.theme.inc
@@ -356,6 +356,38 @@ function template_preprocess_views_data_export_xml_body(&$vars) {
 }
 
 /**
+ * Theme function for XLS file using PHPExcel.
+ */
+function theme_views_data_export_xls_phpexcel_body(&$vars) {
+  _views_data_export_header_shared_preprocess($vars);
+  _views_data_export_body_shared_preprocess($vars);
+  $complete_array = array_merge(array($vars['header']), $vars['themed_rows']);
+
+  // Loading PHPExcel library.
+  $phpexcelPath = libraries_get_path('PHPExcel');
+  include($phpexcelPath . '/Classes/PHPExcel.php');
+  $objPHPExcel = new PHPExcel();
+  $objPHPExcel->setActiveSheetIndex(0);
+  $objPHPExcel->getActiveSheet()->fromArray($complete_array);
+
+  $excel_type = !empty($vars['options']['excel_type']) ? $vars['options']['excel_type'] : 'excel5';
+  switch ($excel_type) {
+    case 'excel5':
+      $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
+      break;
+
+    case 'excel2007':
+      $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
+      break;
+  }
+
+  ob_start();
+  $objWriter->save('php://output');
+  $excelOutput = ob_get_clean();
+  return $excelOutput;
+}
+
+/**
  * Returns a valid XML tag formed from the given input.
  *
  * @param $tag The string that should be made into a valid XML tag.
diff --git a/views_data_export.module b/views_data_export.module
index 9f65737..0d396a8 100644
--- a/views_data_export.module
+++ b/views_data_export.module
@@ -47,6 +47,17 @@ function views_data_export_theme() {
     ),
     'file' => 'theme/views_data_export.theme.inc',
   );
+
+  // PHPExcel XLS theme.
+  $hooks['views_data_export_xls_phpexcel_body'] = array (
+    'variables' => array(
+      'view' => NULL,
+      'options' => NULL,
+      'rows' => NULL,
+      'title' => NULL,
+    ),
+    'file' => 'theme/views_data_export.theme.inc',
+  );
   return $hooks;
 }
 
diff --git a/views_data_export.views.inc b/views_data_export.views.inc
index 84c4d86..bd46890 100644
--- a/views_data_export.views.inc
+++ b/views_data_export.views.inc
@@ -114,6 +114,19 @@ function views_data_export_views_plugins() {
         ),
         'additional themes base' => 'views_data_export_xls',
       ) + $style_defaults,
+      'views_data_export_xls_phpexcel' => array(
+        'title' => t('PHPExcel XLS(X) file'),
+        'help' => t('Display the view as an Excel file generated by PHPExcel.'),
+        'handler' => 'views_data_export_plugin_style_export',
+        'export headers' => array('Content-Type' => 'application/vnd.ms-excel'),
+        'export feed type' => 'xls',
+        'export feed text' => 'XLS',
+        'export feed file' => '%view.xls',
+        'export feed icon' => drupal_get_path('module', 'views_data_export') . '/images/xls.png',
+        'additional themes' => array(
+        ),
+        'additional themes base' => 'views_data_export_xls_phpexcel',
+      ) + $style_defaults,
       'views_data_export_xml' => array(
         'title' => t('XML file'),
         'help' => t('Display the view as a txt file.'),
