Có mã này, sử dụng PHPExcelgetHighestColumn trong xlsx không làm việc
public function getHighestColumn()
{
return $this->objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
}
public function getHighestRow()
{
return $this->objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
}
Tôi có file excel cùng lưu trong .xls và .xlsx Nó có 10 cột (Từ B đến K), và 10 dòng
Khi tôi sử dụng getHighestColumn
, bằng .xls Tôi nhận được 'K' (đúng), nhưng in .xlsx Tôi nhận được AMK (cột cuối cùng trong tất cả bảng tính excel) Giới thiệu về hàng, sử dụng .xls I ' m nhận được 10, nhưng in .xlsx Tôi nhận được 1024. Tôi chắc chắn rằng, ngoại trừ bảng, phần còn lại của trang tính trống.
Bất kỳ ý tưởng nào khiến tôi nhận được kết quả khác?
Sau đây là các độc giả Tôi đang sử dụng
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();
}
Tôi đã kiểm tra với var_dump
và trong từng trường hợp Tôi đang sử dụng đầu đọc đúng.
php 5.3.5, 1.7.8 PHPExcel, Symfony 1,4
Bạn không nên nhận được 'B' cho cột cao nhất trong file xls nếu bạn có dữ liệu trong cột 'K' .... nhưng mở tệp xlsx trong MS EXcel và làm Ctrl-End để xem những gì nó nghĩ rằng ô cuối cùng là –
Ngoài ra, vì hàng và cột được tính bằng getHighestColumn() và getHighestRow() nếu chúng chứa _anything_ (bao gồm thông tin phong cách) thay vì chỉ đơn giản là có nội dung, hãy xem các phương thức getHighestDataColumn() và getHighestDataRow() –
Ý tôi là, nhận 'K', là lỗi đánh máy. Kiểm tra các phương thức đó –