diff --git a/plugins/views_data_export_plugin_style_export.inc b/plugins/views_data_export_plugin_style_export.inc
index 493796f..b6e6e4d 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'),
@@ -222,6 +237,11 @@ class views_data_export_plugin_style_export extends views_plugin_style {
       vpr('views_plugin_style_default: Missing row plugin');
       return;
     }
+    
+    if ('views_data_export_xls_phpexcel' == $this->plugin_name) {
+        $output = $this->render_body();
+        return $output;
+    }
 
     $output = '';
     $rows['header'] = $this->render_header();
diff --git a/theme/views_data_export.theme.inc b/theme/views_data_export.theme.inc
index 8416d96..79ce6e0 100644
--- a/theme/views_data_export.theme.inc
+++ b/theme/views_data_export.theme.inc
@@ -319,7 +319,7 @@ function template_preprocess_views_data_export_msoffice_body(&$vars) {
 
 
   $vars['tbody'] = preg_replace('/<\/?(a|span) ?.*?>/', '', $output); // strip 'a' and 'span' tags
-
+  
 }
 
 function template_preprocess_views_data_export_doc_header(&$vars) {
@@ -327,6 +327,42 @@ function template_preprocess_views_data_export_doc_header(&$vars) {
   template_preprocess_views_data_export_msoffice_header($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']);
+  
+  // Using PHPExcel to generate an XLS file.
+    
+  // Loading PHPExcel library.
+  $phpexcelPath = libraries_get_path('PHPExcel');
+  
+  $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;
+
+        default:
+            break;
+    }
+  
+  ob_start();
+  $objWriter->save('php://output');
+  $excelOutput = ob_get_clean();
+  return $excelOutput;
+}
+
 function template_preprocess_views_data_export_xls_header(&$vars) {
   // Pass through the generic MS Office preprocess.
   template_preprocess_views_data_export_msoffice_header($vars);
diff --git a/views_data_export.module b/views_data_export.module
index 92d9bf2..2465bdf 100644
--- a/views_data_export.module
+++ b/views_data_export.module
@@ -65,6 +65,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 c433c79..6772965 100644
--- a/views_data_export.views.inc
+++ b/views_data_export.views.inc
@@ -115,6 +115,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.'),
