2013-06-18 85 views
1

我有單元保護問題。 爲保護基本原則應該是類似的東西:PHPExcel單元保護

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);  
$objPHPExcel->getActiveSheet()->protectCells('A3:A13', 'PHPExcel'); 

如果我設置保護真實的,我不能插入新行,即使我設置插入行爲true:

$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); 

我想保護結構和一列,而數據在那裏,否則,我想所有空行不受保護。

如何做到這一點?

我試圖取消保護/取消保護循環內的列和行 - 哪些工作正常,但在循環外部,所有單元都受到保護,這意味着我無法插入任何新行。 我試圖在循環內將保護設置爲true,並在循環外部設置爲false,但它不能以這種方式工作。 這裏來取消除ID的所有字段代碼:

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); 
while($row_data = mysql_fetch_assoc($query)) { 
    foreach($row_data as $key=>$value) { 

     $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow($col,$row)->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); 
     if($key != 'id'){ 
      $objPHPExcel->getActiveSheet()->getStyleByColumnAndRow($col,$row)->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_PROTECTED); 
     } 

     $col++; 
    } 
    $row++; 
} 
+0

沒有ü嘗試最後設置你的保護? – DevZer0

+0

@ DevZer0我試過... –

回答

2

嘗試這樣的事情(你的循環之後添加)

$objPHPExcel->getActiveSheet() 
      ->getStyle('A45:S500') 
      ->getProtection()->setLocked(
       PHPExcel_Style_Protection::PROTECTION_UNPROTECTED 
      ); 

(更換適合您的需要範圍)

+0

非常感謝...這是工作:) –