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