PHPExcel toArray пропустить первую строку заголовка

Я загружаю файл Excel на веб-сайт и обрабатываю его для использования в базе данных.

Я использую функцию toArray() для получения всех строк в массиве php.

Но я хочу пропустить первую строку (строка заголовка заголовка). Остальные строки будут храниться в массиве.

Как я могу пропустить первую строку.

Примечание. Я не могу использовать функцию rangeToArray(), так как нет фиксированного диапазона для получения строк в массив. Это динамично. Все, что я хочу, это получить все строки, кроме первой.


person Sohan Patel    schedule 05.04.2015    source источник


Ответы (3)


Эко решает половину проблемы, вы можете использовать rangeToArray(); но вам вообще не нужно использовать цикл:

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

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

В качестве альтернативы используйте toArray(), а затем просто unset первый элемент из возвращаемого массива.

person Mark Baker    schedule 05.04.2015
comment
Да, спасибо @Mark Baker, вы поняли, что я теряюсь. Очень ценю. :D Кстати, я кое-что забыл, я создаю это, потому что мне нужна гибкость строки и столбца для получения данных. хе-хе ... ваш ответ, возможно, ответ на этот вопрос. (у) - person Eko Junaidi Salam; 05.04.2015

Вы можете добиться этого, используя array_shift это:

$toArray = $worksheet->toArray() 
array_shift($toArray);
person Pablo Rodriguez V.    schedule 17.02.2016

Я создаю функцию для чтения файла excel с помощью PHPExcel, как показано ниже:

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 в параметрах функции, чтобы получить нужную строку.

person Eko Junaidi Salam    schedule 05.04.2015
comment
да. Я подумал об этом первым. Но нет ли какого-нибудь «безпетлевого» способа пропустить это? - person Sohan Patel; 05.04.2015
comment
То же самое, хотя я создал его раньше, у меня нет возможности не делать «безцикловый», как вы сказали. Я пробовал это раньше, но мне не удалось найти способ не использовать безпетлевый режим, который... - person Eko Junaidi Salam; 05.04.2015
comment
кстати, если вы найдете прекрасное решение не использовать безпетлевой способ, скажите мне... :) - person Eko Junaidi Salam; 05.04.2015
comment
Конечно. Я уведомлю вас. - person Sohan Patel; 05.04.2015