2015-11-19 13 views
5

mam tego pliku wejściowego bootstrap:Jak mogę sprawdzić, czy plik Xls jest edytowalnym plikiem, czy nie, używając phpexcel?

enter image description here

Ten plik wejściowy tylko zaakceptować plik XLS, kiedy wysłać plik xls, najpierw muszę sprawdzić w php, jeśli plik jest tylko do odczytu lub nie i zwróci konkretny numer, ponieważ potrzebuję akceptować tylko edytowalne pliki.

Przykład czego potrzebuję:

wysłać plik XLS, w php sprawdzić czy jest edytowalny plik, jeśli jest edytowalny plik, przejdź do następnego kroku, a jeśli nie jest edytowalny plik, powrót 3 .

to jest tylko do odczytu pliku:

enter image description here

pracuję z phpexcel i kiedy wysłać plik tylko do odczytu, mam kolejny błąd:

enter image description here

To jest mój kod w php:

<?php 

require "dao/daoExcel.php"; 
require "vendor/autoload.php"; 

class ControllerExcel { 

    private $aDatosExcel; 

    public function setDataExcel($dataexcel) { 

     $estado = true; 

     if($this->moverArchivo($dataexcel)==false){ 
      $estado = false; 
     } 

     if($estado == true && $this->validaHeaders($dataexcel)==false){ 
      $estado = false; 
      return 2; 
     } 

     if($estado == true){ 
      return $this->setInsertExcel($dataexcel); 
     } 

    } 

    public function moverArchivo($dataexcel) { 


     $fileName = $_FILES["archivo"]["name"]; 
     $fileTmpLoc = $_FILES["archivo"]["tmp_name"]; 
     $aHeader = new DaoExcel(); 
     $excelUrl = $aHeader->getHeaderExel($dataexcel); 

     $pathAndName = $excelUrl[17]['par_valor'].$fileName; 

     $moveResult = move_uploaded_file($fileTmpLoc, $pathAndName); 
     if ($moveResult == true) { 
      return true; 
     }else{ 
      return false; 
     } 

    } 

    public function validaHeaders($dataexcel){ 

     $inputFileType = 'Excel5'; 
     $aHeader = new DaoExcel(); 
     $excelHead = $aHeader->getHeaderExel($dataexcel); 
     $inputFileName = $excelHead[17]['par_valor'].$_FILES["archivo"]["name"]; 
     $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
     $objPHPExcel = $objReader->load($inputFileName); 

     $h1 = $objPHPExcel->getActiveSheet()->getCell('A1')->getValue(); 
     $h2 = $objPHPExcel->getActiveSheet()->getCell('B1')->getValue(); 
     $h3 = $objPHPExcel->getActiveSheet()->getCell('C1')->getValue(); 
     $h4 = $objPHPExcel->getActiveSheet()->getCell('D1')->getValue(); 
     $h5 = $objPHPExcel->getActiveSheet()->getCell('E1')->getValue(); 

     $header = $h1."###".$h2."###".$h3."###".$h4."###".$h5; 

     if($excelHead[16]['par_valor'] == $header){ 
      return true; 
     }else{ 
      return false; 
     } 

    } 

    public function setInsertExcel($dataexcel){ 

     $inputFileType = 'Excel5'; 
     $aHeader = new DaoExcel(); 
     $excelHead = $aHeader->getHeaderExel($dataexcel); 
     $inputFileName = $excelHead[17]['par_valor'].$_FILES["archivo"]["name"]; 
     $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
     $objPHPExcel = $objReader->load($inputFileName); 
     $contRows = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow(); 

     for($i=2;$i<=$contRows;$i++){ 
      $h1 = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue(); 
      $h2 = $objPHPExcel->getActiveSheet()->getCell('B'.$i)->getValue(); 
      $h3 = $objPHPExcel->getActiveSheet()->getCell('C'.$i)->getValue(); 
      $h4 = $objPHPExcel->getActiveSheet()->getCell('D'.$i)->getValue(); 
      $h5 = $objPHPExcel->getActiveSheet()->getCell('E'.$i)->getValue(); 
      $aDatos['ac_no']=$h1; 
      $aDatos['custom_no']=$h2; 
      $aDatos['nombre']=$h3; 
      $aDatos['marc']=$h4; 
      $aDatos['estado']=$h5; 
      $aDatos['fecha_registro']=$this->setFecha(); 
      $aDatos['rco_oculto']=0; 
      $this->aDatosExcel[]=$aDatos; 
     } 
     return $aHeader->insertDatosExcel($this->aDatosExcel); 
    } 

    private function setFecha(){ 

     date_default_timezone_set("America/Santiago"); 
     $now = time(); 
     putenv("TZ=America/Santiago"); 
     $fecha=date("Y-m-d H:i:s",$now); 
     $date=date("Y/m/d H:i:s", strtotime($fecha)); 
     return $date; 

    } 

} 

?> 

Więc widzę, że domyślnie phpexcel zaakceptować edytować tylko pliki, ale w jaki sposób mogę sprawdzić moją jaźń czy plik xls jest tylko do odczytu lub nie z phpexcel i zwrócić wiadomość?

Przepraszam przez mój angielski.

+0

Twój angielski jest na tyle, aby zrozumieć swoje pytanie mnóstwo dobre. Żadne przeprosiny nie są konieczne. – wallyk

+0

@Wallyk ok, dziękuję – Jeanbf

+2

Tylko dlatego, że plik ma rozszerzenie ".xls", nie oznacza, że ​​jest to plik Excel w formacie BIFF .... ponieważ jest powszechne, że masz csv, SpreadsheetML lub nawet surowe pliki znaczników html z rozszerzeniem .xls .... Powinieneś użyć metody 'idento()' IOFactory, aby określić, czy rzeczywiście jest to format BIFF (zwracany powinien być "Excel5" dla prawdziwego pliku w formacie BIFF) –

Odpowiedz

0
echo $objPHPExcel->getSecurity()->isSecurityEnabled() ? 'some security is enabled' : 'no security is enabled'; 

source

Powiązane problemy