2015-11-19 10 views
5

Tôi có tập tin đầu vào này bootstrap:Làm cách nào để kiểm tra xem tệp xls có thể chỉnh sửa được tệp hay không bằng cách sử dụng phpexcel?

enter image description here

tập tin đầu vào này chỉ chấp nhận tập tin xls, khi tôi gửi file xls, đầu tiên tôi cần phải kiểm tra trong php nếu tập tin được chỉ đọc hay không và trả về một số lượng cụ thể, bởi vì tôi chỉ cần chấp nhận các tệp có thể chỉnh sửa.

Ví dụ những gì tôi cần:

tôi gửi một file xls, trong php tôi kiểm tra nếu là một file có thể chỉnh sửa, nếu là tập tin có thể chỉnh sửa, tiếp tục với các bước tiếp theo, và nếu không phải là một tập tin có thể chỉnh sửa, trả 3 .

Đây chỉ là một tập tin đọc:

enter image description here

tôi làm việc với phpexcel và khi tôi chỉ gửi một tập tin đọc, tôi có lỗi tiếp theo:

enter image description here

Đây là mã của tôi trong 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; 

    } 

} 

?> 

Vì vậy, tôi thấy rằng theo mặc định, phpexcel chỉ chấp nhận các file có thể chỉnh sửa, nhưng làm thế nào tôi có thể kiểm tra bằng cách tự của tôi nếu một file xls chỉ đọc hoặc không phải với phpexcel, và trả lại một tin nhắn?

Xin lỗi bằng tiếng anh của tôi.

+0

tiếng Anh của bạn là đủ để hiểu câu hỏi của bạn rất nhiều tốt. Không có lời xin lỗi là cần thiết. – wallyk

+0

@wallyk ok, cảm ơn bạn – Jeanbf

+2

Chỉ vì tệp có phần mở rộng '.xls', không có nghĩa là tệp Excel có định dạng BIFF .... bởi vì thường có csv, SpreadsheetML hoặc thậm chí tệp đánh dấu html thô với phần mở rộng của .xls .... Bạn nên sử dụng phương thức 'ident()' của IOFactory để xác định xem nó có thực sự là định dạng BIFF hay không (trả về phải là 'Excel5' cho tệp định dạng BIFF thực) –

Trả lời

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

source

Các vấn đề liên quan