在 PHPExcel 中隐藏公式
Hide formulas in PHPExcel
好的,问题来了。我有以下代码:
$excel = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $excel->load($template);
$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getActiveSheet();
//filling up the sheet with tons of info
$sheet->getProtection()->setPassword('YouWishUKnew');
$sheet->getProtection()->setSheet(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
它加载存储在 $template
中的模板(duh)并用数据填充它。
问题来了。该模板锁定了一些公式,因为在单元格中甚至无法选择。
重新填充后锁消失了(所以我重新设置了,这里没问题)但是现在当我打开重新填充的sheet我可以看到所有的公式!
我的问题是:
有没有办法锁定单元格(使它们不可选择)或隐藏公式(如格式单元格中的 excel 选项 -> 保护 -> 隐藏)?
PS: 我检查了其他问题,没有找到任何可以回答我问题的东西。
你应该使用
$sheet->getStyle('C'.$riga)
->getProtection()
->setHidden(
PHPExcel_Style_Protection::PROTECTION_PROTECTED
);
让我知道这是否是您要找的东西
除了@Gotrekk 的回答之外,为了使其正常工作,您需要为活动 sheet 启用保护。所以,完整的答案是:
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getStyle('D3:AS'.$maxRows)
->getProtection()
->setHidden(PHPExcel_Style_Protection::PROTECTION_PROTECTED);
好的,问题来了。我有以下代码:
$excel = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $excel->load($template);
$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getActiveSheet();
//filling up the sheet with tons of info
$sheet->getProtection()->setPassword('YouWishUKnew');
$sheet->getProtection()->setSheet(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
它加载存储在 $template
中的模板(duh)并用数据填充它。
问题来了。该模板锁定了一些公式,因为在单元格中甚至无法选择。
重新填充后锁消失了(所以我重新设置了,这里没问题)但是现在当我打开重新填充的sheet我可以看到所有的公式!
我的问题是: 有没有办法锁定单元格(使它们不可选择)或隐藏公式(如格式单元格中的 excel 选项 -> 保护 -> 隐藏)?
PS: 我检查了其他问题,没有找到任何可以回答我问题的东西。
你应该使用
$sheet->getStyle('C'.$riga)
->getProtection()
->setHidden(
PHPExcel_Style_Protection::PROTECTION_PROTECTED
);
让我知道这是否是您要找的东西
除了@Gotrekk 的回答之外,为了使其正常工作,您需要为活动 sheet 启用保护。所以,完整的答案是:
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getStyle('D3:AS'.$maxRows)
->getProtection()
->setHidden(PHPExcel_Style_Protection::PROTECTION_PROTECTED);