PHPExcel toArray 跳过第 header 行
PHPExcel toArray skip first header row
我正在将 excel 文件上传到网站并对其进行处理以供数据库使用。
我正在使用 toArray()
函数获取 php 数组中的所有行。
但我想跳过第一行(header 标题行)。其余行将存储在数组中。
如何跳过第一行。
注意:我不能使用 rangeToArray()
函数,因为没有固定的范围来将行放入数组。它是动态的。我想要的只是获取除第一行以外的所有行。
我创建了一个函数来使用 PHPExcel 读取 excel 文件,如下所示:
function Read_Excel($fname=null,$isheet=0,$irow=1,$icol='A'){
$inputFileName = $fname;
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
$sheet = $objPHPExcel->getSheet(intval($isheet));
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for ($row = intval($irow); $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray($icol . $row . ':' . $highestColumn . $row,NULL,TRUE,FALSE);
$rec_tbl[] = $rowData[0];
}
return $rec_tbl;
}
您只需更改函数参数中的 $irow=1
即可获得您想要的行。
Eko 解决了一半的问题,你可以使用 rangeToArray();但你根本不需要使用循环:
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$sheetData = $sheet->rangeToArray(
'A2:' . $highestColumn . $highestRow,
NULL,TRUE,FALSE
);
或者,使用 toArray()
然后只 unset
返回数组中的第一个元素
您可以使用 array_shift 这个来实现:
$toArray = $worksheet->toArray()
array_shift($toArray);
我正在将 excel 文件上传到网站并对其进行处理以供数据库使用。
我正在使用 toArray()
函数获取 php 数组中的所有行。
但我想跳过第一行(header 标题行)。其余行将存储在数组中。
如何跳过第一行。
注意:我不能使用 rangeToArray()
函数,因为没有固定的范围来将行放入数组。它是动态的。我想要的只是获取除第一行以外的所有行。
我创建了一个函数来使用 PHPExcel 读取 excel 文件,如下所示:
function Read_Excel($fname=null,$isheet=0,$irow=1,$icol='A'){
$inputFileName = $fname;
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
$sheet = $objPHPExcel->getSheet(intval($isheet));
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for ($row = intval($irow); $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray($icol . $row . ':' . $highestColumn . $row,NULL,TRUE,FALSE);
$rec_tbl[] = $rowData[0];
}
return $rec_tbl;
}
您只需更改函数参数中的 $irow=1
即可获得您想要的行。
Eko 解决了一半的问题,你可以使用 rangeToArray();但你根本不需要使用循环:
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$sheetData = $sheet->rangeToArray(
'A2:' . $highestColumn . $highestRow,
NULL,TRUE,FALSE
);
或者,使用 toArray()
然后只 unset
返回数组中的第一个元素
您可以使用 array_shift 这个来实现:
$toArray = $worksheet->toArray()
array_shift($toArray);