尝试查找列中第一个空单元格。我的想法是选择我知道必须有值的列(在这种情况下,是JOB_NUMBER)并扫描它,直到找到一个空的单元格。在我看来,下面的代码应该能够实现这一点。但是,它永远不会停止。我想它卡在了while
循环中,但我不明白为什么。
代码:
<?php
require('./Classes/PHPExcel/IOFactory.php');
ini_set('max_execution_time', 800);
ini_set('memory_limit', 2000000000);
$inputFileType = 'Excel2007';
$inputFileName = $_FILES['file']['tmp_name'];
class MyReadFilter implements PHPExcel_Reader_IReadFilter {
public function __construct($fromColumn, $toColumn) {
$this->columns = array();
$toColumn++;
while ($fromColumn !== $toColumn) {
$this->columns[] = $fromColumn++;
}
}
public function readCell($column, $row, $worksheetName = '') {
// Read columns from 'A' to 'AF'
if (in_array($column, $this->columns)) {
return true;
}
return false;
}
}
$filterSubset = new MyReadFilter('A', 'AF');
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadFilter($filterSubset);
$objReader->setLoadSheetsOnly( array("NORTH") );
$objPHPExcelReader = $objReader->load($inputFileName);
$r = 3500;
while(isset($maxrow_north) != 1){
$cellvalue = $objPHPExcelReader->getSheetByName('NORTH')->getCellByColumnAndRow(2, $r);
if(isset($cellvalue) != 1){
$maxrow_north = $r;
} elseif($r > 4000) {
echo "It's over 4000!";
} else {
$r = $r++;
}
}
echo $maxrow_north;
?>
更多背景信息
管理员上传 .xlsx
、.xls
或 .csv
文件到一个 html 表单中。上面的代码是处理程序。因为 .xlsx
文件的原始创建者认为将列扩展到 XCF 是个好主意,所以我限制了可见列的数量。
行也一直延伸到大约 10,000。因此,我想找到第一个空白行并停止。
TIA!