phpexcel按顺序删除单元格上带有注释的多行
我的问题是我试图删除循环中的多行。我只想删除“好”行,不好的行留有标记。 看起来是这样的:phpexcel按顺序删除单元格上带有注释的多行,php,phpexcel,Php,Phpexcel,我的问题是我试图删除循环中的多行。我只想删除“好”行,不好的行留有标记。 看起来是这样的: $this->writeCellErrorData($objPHPExcel);//write coments a to cell and set bg to red //get unique rows array foreach($this->celConstraintViolation as $columnNum=>$row){ foreach($row as
$this->writeCellErrorData($objPHPExcel);//write coments a to cell and set bg to red
//get unique rows array
foreach($this->celConstraintViolation as $columnNum=>$row){
foreach($row as $rowNum=>$data){
if(!in_array($rowNum, $this->errorRowsArr)){
$this->errorRowsArr[]=$rowNum;
}
}
}
sort($this->errorRowsArr);
$this->errorRowsArr= array_reverse($this->errorRowsArr);
for($i=$this->celArrRowNum; $i>1; $i--){ //reverse loop
if(!in_array($i, $this->errorRowsArr)){
$objPHPExcel->getActiveSheet()->removeRow($i,1); //remove rows
}
}
然后我保存文件。虽然bg的颜色是应该的,但评论似乎是在删除之前的位置。是否有办法删除行,以便注释移动到应该移动的位置?要添加注释,请使用此行:
$objPHPExcel->getActiveSheet()->
getComment(array_search($columnNum, $this->header).$rowNum)->getText()->
createTextRun($this->cellErrorMessages[$data[0]]);
请尝试以下代码,这对我很有用:
$filename = 'path/example.xls';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$row_id = 1; // deleted row id
$number_rows = 2; // number of rows count
if ($objWorksheet != NULL) {
if ($objWorksheet->removeRow($row_id, $number_rows)) {
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($filename;
}
}
请尝试以下代码,这对我很有用:
$filename = 'path/example.xls';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$row_id = 1; // deleted row id
$number_rows = 2; // number of rows count
if ($objWorksheet != NULL) {
if ($objWorksheet->removeRow($row_id, $number_rows)) {
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($filename;
}
}
首先,我建议不要使用Excel网格,作为工作区,只使用Excel进行显示-将计算与表示分开,这样的顺序将使调试更容易。如果你想弄乱数据,请读取数组中的必填区域,然后使用PHP解决它。首先,我建议不要使用Excel网格,因为工作区域仅用于显示-将计算与表示分开,这样的顺序将使调试更容易。如果您想处理数据,请读取数组中的必填区域,然后使用PHP解决该区域。