2013-06-11 32 views
11

phpexcel में मैं द्वाराPHPExcel ताला विशेष कक्ष

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

सेल लॉक करने के लिए तो मैं दोगुना किसी भी सेल पर क्लिक करें के बीच ए 1 डी 1 के लिए एकदम सही ढंग से यह पासवर्ड पूछेंगे में सक्षम था।
लेकिन मैं किसी भी अन्य सेल पर क्लिक करें डबल अगर (जैसे) ए 2 यह

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

// असुरक्षित कक्ष श्रेणी

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

// वर्कशीट शीट की सुरक्षा

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

यह पूरी तरह से काम कर रहा है!

+0

Thanxs..Its काम कर रहा है –

2

sravis मुझे सही रास्ते पर मिला, लेकिन फिर भी एक दोष बना रहता है: यदि आप इसे इस तरह करते हैं, तो आप अभी भी पासवर्ड दर्ज किए बिना एक्सेल का उपयोग करके शीट को लॉक कर सकते हैं (जैसा कि यह आपको बताता है कि जब आप क्लिक करते हैं एक सेल पर जो पासवर्ड से लॉक नहीं है)।

$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);