使用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
答案 0 :(得分:19)
行和列由getHighestColumn()
和getHighestRow()
计算,如果它们包含任何内容(包括样式信息),而不是简单地包含内容。加载电子表格时也会计算这些值,因此如果随后向工作表添加新行或列,则可能不准确。
而是使用getHighestDataColumn()
和getHighestDataRow()
方法返回实际包含单元格中数据值的最高行和列。虽然效率较低,但实际上它们在调用时会计算出最高的单元格参考值,这个参考值较慢但始终准确
答案 1 :(得分:1)
$highestColumn = $sheet->getHighestColumn();
$colNumber = PHPExcel_Cell::columnIndexFromString($highestColumn);