我希望使用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'。
非常感谢你。
答案 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);
}
}