2016-03-21 6 views
0

私のプロジェクトでは、PHPExcelを使用して複数のシートを含むExcelファイルをエクスポートしようとしています。そこでは、すべてのシートでいくつかのフィールドをロックする必要があります。PHPExcelはすべてのシートで保護を有効にします

ただし、以下のプログラムは1枚目のシートでのみ動作します。どのように私はそれをすべてのシートで動作させることができます。

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'); 
    } 
} 

ご迷惑をおかけして申し訳ございません。

答えて

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

あなたは新しいワークシートを作成し、その上で細胞を保護するが、あなたのワークブックにそのワークシートを添付することはありませんしているがどこか

はおそらく、あなたは$newsheet

+0

運に保護を設定する必要があります。 "$ newsheet"を追加しても全く動作しません – Arun

関連する問題