1

这就是我试图使用 PHPExcel 无法/禁用我的 Excel 工作表中的某些单元格的方式,但它不能以这种方式工作……工作表完全锁定或完全可写。

我的代码 -

$objPHPExcel = new PHPExcel();

$objPHPExcel->getProperties()->setCreator("Swapnesh Sinha")
                             ->setLastModifiedBy("Swapnesh Sinha")
                             ->setTitle("Office 2007 XLSX Student Grid Document")
                             ->setSubject("Office 2007 XLSX Student Grid Document")
                             ->setDescription("Student document for Office 2007 XLSX, generated using PHP classes.")
                             ->setKeywords("office 2007 openxml php")
                             ->setCategory("Student Data");

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); 
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Swapnesh');
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Vikas');

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(false); 
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(false);
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Sachin');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$filename = "Student-data-sheet".".xlsx";
$objWriter->save($filename);

我正在尝试不修改 Swapnesh/Vikas 内容,但可以相应地修改 Sachin。

// 这应该启用以启用以下任何一项!$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);

我正在使用它,但无法做到......让我知道如何解决它。

4

1 回答 1

2
$objPHPExcel->getActiveSheet()
    ->getStyle('A1:B1')
    ->getProtection()->setLocked(
        PHPExcel_Style_Protection::PROTECTION_PROTECTED
    );

编辑

// Set the entire worksheet to locked
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
// Unprotect those cells that you want to make editable
$objPHPExcel->getActiveSheet()
    ->getStyle('A2:B2')
    ->getProtection()->setLocked(
        PHPExcel_Style_Protection::PROTECTION_UNPROTECTED
    );

之后不要重置工作表级别的更改

于 2013-02-27T12:05:34.327 回答