2013-06-11 3 views
11

을 잠글 나는 A1은 예상대로이 암호를 묻습니다 (D1)을 사이에 셀을 더블 클릭하면PHPExcel는 특정 셀을 phpexcel에서

$objPHPExcel->getActiveSheet()->protectCells('A1:D1', 'php'); 
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); 

에 의해 세포를 고정 할 수 있었다.
하지만 난 다른 셀을 더블 클릭하면 (예를 들어) A2는

"The cell or chart that you are trying to change is protected and therefore 
read-only". 

그것의 잠금 전체 워크 시트가 말했다, 그것은 단지 특정 셀을 잠금 및 편집 가능한 다른 세포를 떠날 수 있습니까?

답변

15

마지막으로, 내가 .. 그것을 할 수있는 올바른 방법을 발견

$objPHPExcel = new PHPExcel; 
$objSheet = $objPHPExcel->getActiveSheet(); 

// 셀 범위를 보호

$objSheet->protectCells('A1:B1', 'PHP'); 

// UNPROTECT 셀 범위

$objSheet->getStyle('A2:B2')->getProtection() 
->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); 

// 작업 표 용지를 보호하십시오.

$objSheet->getProtection()->setSheet(true); 

이것은 완벽하게 작동합니다!

+0

고맙습니다. 작동 중 –

2

sravis는 올바른 길로 나를 잡았지만 여전히 하나의 결함이 남아 있습니다. 이렇게하면 암호를 입력하지 않고 Excel을 사용하여 시트 잠금을 제거 할 수 있습니다 (클릭 할 때 알려주 듯이). 비밀 번호로 잠겨 있지 않은 셀에서).

$sheet->getProtection()->setPassword('password hare'); 
$sheet->getProtection()->setSheet(true); 
$sheet->getStyle('A1:B2')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); 

그 방법 :

세포의 몇 가지를 암호로 엑셀 시트를 잠그고 보호를 해제하려면 시트 (대신 세포의 단지 몇)을 보호하고 약간의 세포를 보호를 해제 할 필요가 사용자는 Excel을 사용하여 시트의 보호를 해제 할 때 암호를 입력해야합니다.

-2
/* this section lock for all sheet */ 
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); 

/* and this section unlock cell rage('A2:Z2') from locked sheet */ 
$objPHPExcel->getActiveSheet()->getStyle('A2:Z500')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); 
관련 문제