Столбец gethighest в xlsx не работает


Имейте этот код, используя PHPExcel

    public function getHighestColumn()
    {
      return $this->objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
    }

    public function getHighestRow()
    {
      return $this->objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
    }

У меня есть один и тот же файл excel, сохраненный в .xls и .xlsx Он состоит из 10 столбцов (от B до K) и 10 строк

Когда я использую getHighestColumn, в .xls я получаю "K" (правильно), но в .xlsx я получаю AMK (последний столбец на всех листах excel) Что касается строки, используя .xls, я получаю 10, но в .xlsx я получаю 1024. Я почти уверен, что, кроме таблицы, остальная часть рабочего листа пуста.

Есть идеи, почему я становлюсь другим результат?

Вот читатели, которыми я пользуюсь

public function openReader($filePath)
    {
      //aca determinamos cual tipo es para saber que reader es
    $reader_5 = new PHPExcel_Reader_Excel5();
    $reader_07 = new PHPExcel_Reader_Excel2007();

    $inputFileType = $this->canRead(new PHPExcel_Reader_Excel5(), $filePath, self::EXCEL5);

    if($inputFileType === '')
      $inputFileType = $this->canRead(new PHPExcel_Reader_Excel2007(), $filePath, self::EXCEL2007);
    else
    {
      throw new Exception("No se puede procesar el archivo; el formato no es correcto");
    }
    return PHPExcel_IOFactory::createReader($inputFileType);
    }


private function canRead($reader, $path, $readerType)
  {
    return $reader->canRead($path) ? $readerType: '';
  }

public function persist($fileName)
    {
      $filePath = sfConfig::get('sf_upload_dir').'\\'.$fileName;

      $this->objReader = $this->openReader($filePath);
      //Set only first Sheet
      $this->setOnlyFirstSheet();

      $this->createObjPHPExcel($filePath);

      echo $this->getHighestColumn();
      echo $this->getHighestRow();
     }

Я проверил с помощью var_dump, и в каждом случае я использую правильный считыватель.

Php 5.3.5, PHPExcel 1.7.8, Symfony 1.4

Author: Gonzalo.-, 2013-04-09

2 answers

Строки и столбцы подсчитываются по getHighestColumn() и getHighestRow(), если они содержат что-либо (включая информацию о стиле), а не просто содержимое. Эти значения также вычисляются при загрузке электронной таблицы, поэтому могут быть неточными, если впоследствии вы добавите на лист новые строки или столбцы.

Вместо этого используйте методы getHighestDataColumn() и getHighestDataRow() для возврата самой высокой строки и столбца, которые фактически содержат значения данных в ячейках. Будучи менее эффективными, они фактически вычисляют самую высокую ячейку ссылка при вызове, что медленнее, но всегда точно

 19
Author: Mark Baker, 2013-04-09 13:57:24
$highestColumn = $sheet->getHighestColumn();    
$colNumber = PHPExcel_Cell::columnIndexFromString($highestColumn);
 1
Author: gopi, 2015-06-19 13:58:57