Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
Skip First Row in PHPSpreadsheet Import

Just started working with phpspreadsheet. I am trying to figure out how to skip the header row in my excel file when uploading.

require '../vendor/autoload.php';
if (pathinfo($_FILES['upexcel']['name'], PATHINFO_EXTENSION) == 'csv') {
  $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
} else {
  $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
}
$spreadsheet = $reader->load($_FILES['upexcel']['tmp_name']);

$worksheet = $spreadsheet->getActiveSheet();
$sql = "INSERT INTO `testCommission` (`One`, `two`, `three`, `four`, `five`, `six`, `seven`) VALUES (?, ?, ?, ?, ?, ?, ?)";
foreach ($worksheet->getRowIterator() as $row) {
  // Fetch data
  $cellIterator = $row->getCellIterator();
  $cellIterator->setIterateOnlyExistingCells(false);
  $data = [];
  foreach ($cellIterator as $cell) {
    $data[] = $cell->getValue();
  }

What can I do to achieve this with the above script?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

You need to detect, when it is the first row, a binary variable like this helps

<?php
require '../vendor/autoload.php';
if (pathinfo($_FILES['upexcel']['name'], PATHINFO_EXTENSION) == 'csv') {
  $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
} else {
  $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
}
$spreadsheet = $reader->load($_FILES['upexcel']['tmp_name']);

$worksheet = $spreadsheet->getActiveSheet();
$sql = "INSERT INTO `testCommission` (`One`, `two`, `three`, `four`, `five`, `six`, `seven`) VALUES (?, ?, ?, ?, ?, ?, ?)";
$isheader = 0;
foreach ($worksheet->getRowIterator() as $row) {
  // Fetch data
  if($isheader > 0) {
      $cellIterator = $row->getCellIterator();
      $cellIterator->setIterateOnlyExistingCells(false);
      $data = [];
      foreach ($cellIterator as $cell) {
          $data[] = $cell->getValue();
      }
  } else 
  { $isheader = 1; }
}
?>
over 4 years ago · Santiago Trujillo Relatório

0

Use a filter class. See docs: https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-files/#reading-only-specific-columns-and-rows-from-a-file-read-filters

Don't forget the autoload:

require_once ( 'vendor/autoload.php' );

Create a filter:

class FirstRowFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter
{
    public function readCell($column, $row, $worksheetName = '') {
        //  Return true for rows after first row
        return $row > 0;
    }
}

Apply to the reader:

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");

$filterRow = new FirstRowFilter();

$reader->setReadFilter($filterRow);

Load file:

$spreadsheet = $reader->load($file);

The reader will only load rows after the specified row.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda