--- sites/all/modules/contrib/feeds_excel/FeedsExcelParser.inc	(date 1459699007000)
+++ sites/all/modules/contrib/feeds_excel/FeedsExcelParser.inc	(revision )
@@ -48,9 +48,45 @@
   /**
    * Get total rows.
    */
-  private function getTotal() {
-    $this->reader->setReadFilter(new FeedsExcelParserIReadFilter());
-    $this->reader->load($this->file_path);
+  private function getTotal($config) {
+
+    if (!$this->reader instanceof PHPExcel_Reader_Abstract) {
+
+    }
+    $excel = $this->reader->load($this->file_path);
+    // Setup parse type.
+    switch ($config['sheets']['parse_type']) {
+      case 'first':
+        $sheets = array($excel->getSheet());
+        break;
+
+      case 'title':
+        $sheets = array($excel->getSheetByName($this->config['sheets']['parse_value']));
+        break;
+
+      case 'index':
+        $sheets = array($excel->getSheet($this->config['sheets']['parse_value']));
+        break;
+
+      default:
+        $sheets = $excel->getWorksheetIterator();
+    }
+
+    $ii = 0;
+
+
+    foreach ($sheets as $sheet) {
+      $a = $sheet->getRowIterator();
+      foreach ($a as $i) {
+        $ii++;
+      }
+    }
+
+    if (!$config['no_headers']) {
+      $ii = $ii - 1;
+    }
+
+    return $ii;
     return count(drupal_static('feeds_excel_parser_row_counter'));
   }
 
@@ -80,16 +116,20 @@
 
     // Init state. Use two pointers: global and by sheet.
     $state = $source->state(FEEDS_PARSE);
-    $state->total = !empty($state->total) ? $state->total : $this->getTotal();
+    $state->total = !empty($state->total) ? $state->total : $this->getTotal($this->config);
     $state->pointer = !empty($state->pointer) ? $state->pointer : array(
       'global' => 1,
-      'sheet'  => 1,
+      'sheet' => 1,
+      'row' => 1,
     );
 
     // Prepare to parsing.
     $items = array();
-    $filter = new FeedsExcelParserIReadFilter($state->pointer['sheet'], $this->config['chunk_size']);
-    $this->reader->setReadFilter($filter);
+//    $filter = new FeedsExcelParserIReadFilter($state->pointer['row'], $this->config['chunk_size'], $state->pointer['sheet']);
+
+    if ($this->reader instanceof PHPExcel_Reader_Abstract) {
+//      $this->reader->setReadFilter($filter);
+    }
     $excel = $this->reader->load($this->file_path);
 
     // Setup parse type.
@@ -119,8 +159,8 @@
     }
 
     // Parse values.
-    foreach ($sheets as $sheet) {
-      foreach ($sheet->getRowIterator() as $row_index => $row) {
+    foreach ($sheets as $sheet_index => $sheet) {
+      foreach ($sheet->getRowIterator($state->pointer['row'], $state->pointer['row'] + $this->config['chunk_size']) as $row_index => $row) {
 
         // Generare row key.
         $row_key = implode('__', array($sheet->getTitle(), $row_index));
@@ -154,10 +194,13 @@
 
         // Increment pointers.
         $state->pointer['global']++;
-        $state->pointer['sheet'] = ($row_index + 1);
+        $state->pointer['row']++;
       }
+      $state->pointer['sheet'] = $sheet_index;
     }
+    if ($state instanceof FeedsState) {
 
+    }
     $state->progress($state->total, $state->pointer['global']);
     return new FeedsParserResult(array_values($items));
   }