如何使用PHPExcel库禁用几个单元格,但保持其余单元格可编辑? 我尝试使用以下几种组合:
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);
$objPHPExcel->getActiveSheet()
->getStyle('A1:Z50')
->getProtection()->setLocked(
\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED
);
$objPHPExcel->getActiveSheet()
->getStyle('C7:E7')
->getProtection()->setLocked(
\PHPExcel_Style_Protection::PROTECTION_PROTECTED
);
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(false);
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(false);
但是我能得到的就是禁用或启用所有文档。 我很确定这很容易实现。提前谢谢。
答案 0 :(得分:3)
保护整张纸的解决方案,同时保持特定单元格的可编辑性:
$excel->getActiveSheet()->getProtection()->setSheet(true);
$excel->getActiveSheet()->getStyle('A12:D50')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
完整的例子。在生成的文件中,我只能编辑单元格B2,C2和D2:
$excel = new PHPExcel();
$excel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!')
->setCellValue('C1', 'Hello')
->setCellValue('D2', 'world!')
;
$excel->getActiveSheet()
->getProtection()->setSheet(true);
$excel->getActiveSheet()->getStyle('B2:D2')
->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);
$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$writer->save(str_replace('.php', '.xls', __FILE__));