2015-11-19 8 views
5

Ich habe diese Eingabedatei Bootstrap:Wie kann ich überprüfen, ob eine xls-Datei bearbeitbare Datei ist oder nicht, mit phpexcel?

enter image description here

Diese Eingabedatei nur xls-Datei übernehmen, wenn ich die xls-Datei senden, zuerst muss ich in PHP überprüfen, ob die Datei nur oder nicht gelesen wird und eine Rückkehr spezifische Nummer, weil ich nur editierbare Dateien akzeptieren muss.

Beispiel, was ich brauche:

ich eine xls-Datei senden, die ich in PHP überprüfen, ob eine editierbare Datei ist, wenn editierbare Datei ist, fahren Sie mit dem nächsten Schritt, und wenn nicht eine editierbare Datei ist, kehre 3 .

enter image description here

ich mit PHPExcel arbeiten und wenn ich eine einzige Lesedatei senden, habe ich den nächsten Fehler: eine einzige Lesedatei Dieser

enter image description here

Dies ist mein Code in 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; 

    } 

} 

?> 

So sehe ich standardmäßig, dass PHPExcel nur bearbeitbare Dateien akzeptieren, aber wie kann ich von mir selbst überprüfen, ob eine xls-Datei nur gelesen oder nicht mit phpexcel, und eine Nachricht zurückgeben?

Sorry von meinem Englisch.

+0

Dein Englisch ist viel gut genug, um Ihre Frage zu verstehen. Keine Entschuldigung ist notwendig. – wallyk

+0

@wallyk ok, danke – Jeanbf

+2

Nur weil eine Datei eine '.xls'-Erweiterung hat, bedeutet das nicht, dass es sich um eine Excel-Datei im BIFF-Format handelt .... weil es häufig csv, SpreadsheetML oder sogar HTML-Markup-Dateien sind mit einer Erweiterung von .xls .... Sie sollten die 'identify() 'Methode der IOFactory verwenden, um zu bestimmen, ob es wirklich BIFF-Format ist (Rückkehr sollte' Excel5' für eine echte BIFF-Datei sein) –

Antwort

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

source

Verwandte Themen