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 に答える