如何在 php 中使用 PHPExcel 交替无法/禁用 Excel 工作表字段

Posted

技术标签:

【中文标题】如何在 php 中使用 PHPExcel 交替无法/禁用 Excel 工作表字段【英文标题】:How to alternately unable/disable Excel sheet fields using PHPExcel in php 【发布时间】:2013-02-27 11:52:55 【问题描述】:

这就是我试图使用 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);

我正在使用它,但无法做到。请告诉我如何解决它。

【问题讨论】:

您是否成功禁用单元格编辑?如果有,怎么做? 【参考方案1】:
$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
    );

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

【讨论】:

我试过了,但还是没有帮助 ----- $objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); $objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true); $objPHPExcel->getActiveSheet()->getStyle('A1:B1')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_PROTECTED); $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Swapnesh'); $objPHPExcel->getActiveSheet()->setCellValue('B1', 'Vikas'); $objPHPExcel->getActiveSheet()->getProtection()->setSheet(false); $objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(false); 我试图让 A1 和 B1 不可编辑,而我可以编辑 C1

以上是关于如何在 php 中使用 PHPExcel 交替无法/禁用 Excel 工作表字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在phpexcel中设置自动高度(自动换行)?

PHP - Codeigniter:未捕获的异常“PHPExcel_Reader_Exception”,消息“无法打开读取,文件不存在”

phpexcel 导入数据不能超过122条

如何使用 PhpExcel 从 MySQL 数据创建条形图

phpexcel不能输出中文

PHP require include的路径问题