使用PHPExcel删除行

时间:2013-07-10 06:22:39

标签: phpexcel

我希望使用PHPExcel从Excel工作表中删除以“//”开头的所有行。 我的代码:

require '../Classes/PHPExcel.php';
require_once '../Classes/PHPExcel/IOFactory.php';

error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);


$path = "del_head.xls";

$objPHPExcel = PHPExcel_IOFactory::load($path);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);


for($row=1; $row < $highestRow; ++$row){
   $value = $objPHPExcel->getActiveSheet()->getCell('A'.$row)->getValue();

   if (substr($value,0,2) == "//") {
      $objPHPExcel->getActiveSheet()->removeRow($row, $row);
      }
}

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
$objWriter->save($path);

但是,代码不会删除所有以“//”开头的行。 我认为问题在于函数'removeRow'。

非常感谢你。

4 个答案:

答案 0 :(得分:3)

您对removeRow()的调用存在一个明显的问题:第一个参数是起始行,第二个参数是要删除的行数;因此,如果您在第5行找到//,那么您告诉PHPExcel从第5行开始删除5行(即第5行到第9行)。

您还在读取扩展名为.xls的文件(假设它是扩展名中的BIFF文件),但使用与OfficeOpenXML文件(通常为.xlsx文件)相同的.xls文件名保存。< / p>

那么你的文件实际上是什么格式?调用IOFactory的identify()方法会将其识别为什么?如果它实际上是逗号或制表符分隔的值文件(最有可能具有前导//),那么您最好使用PHP的fgetcsv()fputcsv()函数将其处理为删除那些行。

答案 1 :(得分:1)

替换此行

$objPHPExcel->getActiveSheet()->removeRow($row, $row);

$objPHPExcel->getActiveSheet()->removeRow($row);

答案 2 :(得分:0)

请检查在线指定的值:

curl -i -X PUT -H "Content-Type:application/json" -d '
{ "number": 124 }
' localhost:8080/myapp/projects/79
{
  "id" : 79,
  "number" : "124",
  "name" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/myapp/projects/79"
    },
    "project" : {
      "href" : "http://localhost:8080/myapp/projects/79"
    }
  }
}

我已经测试了此代码,值始终为1

答案 3 :(得分: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);
    }
}