2016-03-21 5 views
0

In meinem Projekt versuche ich, eine Excel-Datei mit mehreren Blättern mit PHPExcel zu exportieren. Da muss ich einige Felder in allen Blättern sperren.PHPExcel macht den Schutz aktiv auf allen Blättern

Aber das folgende Programm funktioniert nur auf dem ersten Blatt. Wie kann ich es auf allen Blättern arbeiten lassen?

function export() { 
    if ($this -> session -> userdata('username') && $this -> session -> userdata('role') != 200) { 
     if (!empty($_POST['btnExport'])) { 
      $exportRecord = $this -> expmodel -> getExportData(); 
      $this -> load -> library('excel'); 
      $this -> load -> library('zip'); 


      $sheetno = 0; 
      $loopcount = 0; 
      $newsheet = $this -> excel -> createSheet($sheetno); 
      $this -> excel -> setActiveSheetIndex(0); 


      $rowCount = 1; 
      foreach ($exportRecord as $export) { 

       foreach ($export as $val) { 
        if (!isset($val)) 
         $value = NULL; 
        elseif ($val != "") 
         $value = strip_tags($val); 
        else 
         $value = ""; 
        $workObj = new PHPExcel_Worksheet(); 
        $workObj -> protectCells($column . $rowCount, 'PHP'); 
        $newsheet -> setCellValue($column . $rowCount, $value); 
        $column++; 
       } 
       $rowCount += 1; 
       if (isset($exportRecord[$loopcount + 1]['tra_cp_name'])) { 
        if ($exportRecord[$loopcount + 1]['tra_cp_name'] != $exportRecord[$loopcount]['tra_cp_name']) { 
         $sheetno += 1; 
         $newone += 1; 
         $rowCount = 1; 
        } 
       } 

       if ($newone > 0) { 
        $newsheet = $this -> excel -> createSheet($sheetno); 
        $newSheet = 1; 
       } 
       $loopcount += 1; 
      } 
      $filename = 'export' . $filecount . '.xls'; 
      $writeObj = PHPExcel_IOFactory::createWriter($this -> excel, 'Excel5'); 
      $filecount += 1; 
      $filearray[] = $filename; 
      $writeObj -> save('./excel/' . $filename); 
      $downloadedFileCount = sizeof($filearray); 
      for ($i = 0; $i < $downloadedFileCount; $i++) { 
       $this -> zip -> read_file('./excel/' . $filearray[$i]); 
      } 
      $this -> zip -> download('excursion_files.zip'); 
     } 


    } 
    else { 
     $this -> session -> sess_destroy(); 
     redirect('backoffice', 'refresh'); 
    } 
} 

Jede mögliche Hilfe geschätzt werden kann.

Antwort

0
$workObj = new PHPExcel_Worksheet(); 
$workObj -> protectCells($column . $rowCount, 'PHP'); 

Sie ein neues Arbeitsblatt erstellen und die Zellen auf, dass der Schutz, aber nie irgendwo, dass Arbeitsblatt zu Ihrer Arbeitsmappe anhängen

Vielleicht sollten Sie Schutz Einstellung sein auf $newsheet

+0

kein Glück. Nach dem Hinzufügen von "$ newsheet" funktioniert es überhaupt nicht – Arun