6

PHPExcelを使用して、このコードを用意してください

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

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

.xls と .xlsx で保存された同じ Excel ファイルがあります。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

4

2 に答える 2