使用密码phpExcel锁定特定单元格

时间:2013-08-12 08:40:27

标签: codeigniter codeigniter-2 phpexcel codeplex

我正在将excel文件从我的计算机中的文件夹上传到服务器中的文件夹,上传后我正在加载上传的文件以便我可以保护某个单元格,我在下面使用的第一种方法根本不起作用

  function LockCertainCells(){
         $labref=  $this->uri->segment(3);
          $objReader = new PHPExcel_Reader_Excel2007();
          $path = "analyst_uploads/" . date('Y') . '/' . date('M') . '/'. $labref .'/'. $labref . ".xlsx";
          $objPHPExcel = $objReader->load($path);
          $objPHPExcel->setActiveSheetIndexbyName('Sample Summary');
          $objPHPExcel->getActiveSheet()->protectCells('A17:G85','PHPExcel');
          $objPHPExcel ->getActiveSheet()->getProtection()->setSheet(true);                         
      }

第二个

  function LockCertainCells(){
     $labref=  $this->uri->segment(3);
      $objPHPExcel = new PHPExcel;
      $path = "analyst_uploads/" . date('Y') . '/' . date('M') . '/'. $labref .'/'. $labref . ".xlsx";
      $objSheet = $objPHPExcel->load($path);
      $objSheet->setActiveSheetIndexbyName('Sample Summary');
      $objSheet->protectCells('A17:G85', 'PHP');
      $objSheet->getProtection()->setSheet(true);                        

}

抛出这个错误:

Fatal error: Call to undefined method PHPExcel::load() in C:\127.0.0.1\htdocs\NQCL\.....

建议!

1 个答案:

答案 0 :(得分:0)

PHPExcel类没有加载方法,这正是你得到错误的原因....第一个方法是PHPExcel库提供的用于将文件加载到PHPExcel对象的方法,第二个方法不是。使用有效的方法(并且是所有文档中描述的方法);不是那个不存在的那个。

在设置了单元格保护之后,锁定单元格的第一种方法没有对PHPExcel对象执行任何操作(例如保存它);因此,只要LockCertainCells函数终止,它就会超出范围并被PHP脚本丢弃。如果要在文件中进行更改,则需要再次保存文件。我相信MS Excel本身要求您保存文件,如果您想永久对该文件进行任何更改。

修改

您也错过了设置受保护单元格的密码:

$objSheet->getProtection()->setPassword('mypassword');