我试图根据Cell B = 59/61等条件删除行。 但是,PHPExcel非常缓慢地加载行。 对于18000行/ 3MB的工作表,加载大约需要4小时30分钟。 如何提高数据工作表的加载和删除速度?
set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/');
/** PHPExcel_IOFactory */
include 'PHPExcel/IOFactory.php';
//Defining File Type
$fileType = "Excel2007";
//Retrieving File
$tmpfname = "bigfile.xlsx";
//Loading file into PHPExcel
$objPHPExcel = PHPExcel_IOFactory::load($tmpfname);
$worksheet = $objPHPExcel->getSheet(0); //Worksheet of file defined as first
$lastRow = $worksheet->getHighestRow();
//Determine which rows to be remove
$DeletedRows = [];
$DeletedRowCount = 0;
for ($row = 2; $row <= $lastRow; $row++) {
//Checker
$CellA = $worksheet->getCell('A' . $row)->getValue();
$CellB = $worksheet->getCell('B' . $row)->getValue();
$CellE = $worksheet->getCell('E' . $row)->getValue();
//To check condition
if ($CellB != 8 && $CellB != 9 && $CellB != 18 && $CellB != 19) {
$DeletedRows[] = $row;
continue;
}
//To check if condition
else if ($CellE == 59 || $CellE == 61){
$DeletedRows[] = $row;
continue;
}
}
//Removing the rows
//Deleting this way as when one row deleted, one row less.
foreach ($DeletedRows as $key => $value) {
$row = $value - $DeletedRowCount;
$objPHPExcel->getActiveSheet()->removeRow($row, 1);
$DeletedRowCount++;
}
//Write file into original file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
$objWriter->save($tmpfname);