7

我正在将一个 excel 文件上传到网站并对其进行处理以供数据库使用。

我正在使用toArray()函数来获取 php 数组中的所有行。

但我想跳过第一行(标题行)。其余行将存储在数组中。

我怎样才能跳过第一行。

注意:我不能使用rangeToArray()函数,因为没有固定的范围来将行放入数组。它是动态的。我想要的只是获取除第一行之外的所有行。

4

3 回答 3

11

Eko回答了一半的问题,你可以使用 rangeToArray(); 但您根本不需要使用循环:

$highestRow = $sheet->getHighestRow(); 
$highestColumn = $sheet->getHighestColumn();

$sheetData = $sheet->rangeToArray(
    'A2:' . $highestColumn . $highestRow,
    NULL,TRUE,FALSE
);

或者,使用toArray(),然后只使用unset返回数组中的第一个元素

于 2015-04-05T11:17:47.367 回答
8

您可以使用array_shift来实现这一点:

$toArray = $worksheet->toArray() 
array_shift($toArray);
于 2016-02-17T12:50:01.843 回答
3

我创建了一个函数来使用 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函数参数即可获得所需的行。

于 2015-04-05T10:39:35.307 回答