如何在 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 工作表字段的主要内容,如果未能解决你的问题,请参考以下文章
PHP - Codeigniter:未捕获的异常“PHPExcel_Reader_Exception”,消息“无法打开读取,文件不存在”