Search code examples
phpphpexcelxlsphpofficephpoffice-phpspreadsheet

PHP XLS Reader is writing extra columns


I Have a function that reads a xls on php, transforms it, and returns it in csv, heres the html

<!DOCTYPE html>
<html>
<head>
    <title>Import</title>
</head>
<body>
    <h1>File upload</h1>
    <form method="POST" action="process.php" enctype="multipart/form-data">
        <label>File</label>
        <input type="file" name="arquivo"><br><br>
        <input type="submit" value="send">
    </form>
</body>
</html>

and the processing:

<?php

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;

function extractIdFromUrl($url) {
    if (strpos($url, 'senado.leg.br') !== false) {
        preg_match('/\/materia\/(\d+)$/', $url, $matches);
        if (!empty($matches[1])) {
            return $matches[1];
        }
    }

    if (strpos($url, 'camara.leg.br') !== false) {
        preg_match('/\?idProposicao=(\d+)$/', $url, $matches);
        if (!empty($matches[1])) {
            return $matches[1];
        }
    }

    return '';
}

function readData($arquivo){
    $reader = IOFactory::createReader("Xls");
    $spreadsheet = $reader->load($arquivo);
    $sheet_count = $spreadsheet->getSheetCount();
    $achou = FALSE;
    $csvFileName = 'output.csv';
    $csvFile = fopen($csvFileName, 'w');
    for ($i = 0; $i < $sheet_count; $i++) {
        $sheet = $spreadsheet->getSheet($i);

        $headerRow = $sheet->getRowIterator(1)->current();
        $cellIterator = $headerRow->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(false);

        $header = [];
        foreach ($cellIterator as $cell) {
            if (!is_null($cell)) {
                $value = $cell->getCalculatedValue();
                $header[] = $value;
            }
        }
        fputcsv($csvFile, $header);
        foreach ($sheet->getRowIterator(2) as $row) {
            $cellIterator = $row->getCellIterator();
            $cellIterator->setIterateOnlyExistingCells(true);

            $rowData = [];
            foreach ($cellIterator as $cell) {
                
                if (!is_null($cell)) {
                    // if ($cell->hasHyperlink()) {
                    //     $hyperlink = $cell->getHyperlink();
                    //     $url = $hyperlink->getUrl();
                    //     $rowData[] = $cell->getCalculatedValue();
                    //     $rowData[] = $url;
                    //     $id = extractIdFromUrl($url);

                    //     if (!empty($id) && $id >= 1000000) {
                    //         $rowData[] = '';
                    //         $rowData[] = $id;
                    //     } else if(!empty($id) && $id < 1000000){
                    //         $rowData[] = $id;
                    //         $rowData[] = '';
                    //     }
                    // }else{
                        $value = $cell->getCalculatedValue();
                        $rowData[] = $value;
                    }
                    
                }

            }
            fputcsv($csvFile, $rowData);
        }
    }

    fclose($csvFile);
    echo "CSV file generated: $csvFileName";
}

if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES['arquivo'])) {
    $route = $_FILES['arquivo']['tmp_name'];
    readData($route);
}
?>

with this code, it succesfully converts the exact xls table to csv, but the thing is, the second column of my xls table are hyperlinks, so i want the third column to be the url's of those hyperlinks, and my method extractIdFromUrl would extract an id from the URL, if the id is lesser than 1000000 it should be printed on the 4th colunm, if its bigger it would be printed on the 5th colunm, if i uncomment my code, it will almost do this, but instead of just modifying the content of the columns, it generates 3 extra columns after it finds the row with hyperlinks and it makes my table unaligned, with the three last columns without a header

I Tried many times to change the code but i don't know how to modify the colunms without having to add extra ones

here's the equivalent in csv of my input, and also the image of the xls
xls image

"Proposição","Proposição_Autor_Data:","Site da Preposição","Cod. Materia Senado","Id. da Preposição","Ementa:","Responsável","Origem","Avaliado","Classificação","Ano"
"PL 2524/2024 ","PL 2524/2024 
Autor: Senador Mecias de Jesus (REPUBLICANOS/RR)
Data da apresentação:  21/06/2024","","","","Dispõe sobre os direitos do nascituro na ordem civil, estabelecendo a presunção absoluta de viabilidade fetal a partir da vigésima segunda semana de gravidez.","karlla.magalhães","Senado Federal","Não","Relevante","2024"
"PL 2473/2024 ","PL 2473/2024 
Autor: Senador Jayme Campos (UNIÃO/MT)
Data da apresentação:  19/06/2024","","","","Altera a Lei nº 9.656, de 3 de junho de 1998, que dispõe sobre os planos e seguros privados de assistência à saúde, para vedar a rescisão unilateral do contrato ou do vínculo dos planos de saúde de beneficiário que estiver internado ou em tratamento garantidor de sua sobrevivência ou de sua incolumidade física.","karlla.magalhães","Senado Federal","Não","Relevante","2024"
"PL 2415/2024 ","PL 2415/2024 
Autor: Senador Flávio Arns (PSB/PR)
Data da apresentação:  18/06/2024","","","","Altera a Lei nº 9.656, de 3 de junho de 1998, que dispõe sobre os planos e seguros privados de assistência à saúde, e a Lei nº 9.961, de 28 de janeiro de 2000, que cria a Agência Nacional de Saúde Suplementar – ANS e dá outras providências, para estender aos planos de saúde coletivos normas aplicáveis aos planos de saúde individuais ou familiares.","karlla.magalhães","Senado Federal","Não","Relevante","2024"
"PL 2522/2024 ","PL 2522/2024 
Autor: Sâmia Bomfim - PSOL/SP
Data da apresentação:  20/06/2024 ","","",""," Estabelece que, nos casos em que o aborto é autorizado, a invocação do dispositivo da objeção de consciência para recusar a realização do aborto e o não oferecimento das melhores técnicas em saúde que possam salvar a vida meninas, mulheres e de pessoas que tenham direito a passar pelo procedimento nas unidades de serviço de saúde públicas e privadas que o realizam, configura crime de omissão de socorro, nos termos do Decreto-Lei nº 2 848, de 7 de dezembro de 1940 (Código Penal Brasileiro), e dá outras providências. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2521/2024 ","PL 2521/2024 
Autor: Sâmia Bomfim - PSOL/SP
Data da apresentação:  20/06/2024 ","","","","Dispõe sobre a obrigatoriedade de profissionais da saúde de unidades de saúde públicas ou privadas informarem às vítimas de estupro, ou representante legal, a respeito da possibilidade de realização de aborto no caso de gravidez resultante de estupro. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2520/2024 ","PL 2520/2024 
Autor: Sâmia Bomfim - PSOL/SP
Data da apresentação:  20/06/2024 ","","","","Dispõe sobre o exercício da medicina nos serviços públicos de saúde, no âmbito dos procedimentos de aborto legal, visando garantir o acesso pleno e irrestrito aos direitos reprodutivos de meninas, mulheres e todas as pessoas que possam gestar. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2514/2024 ","PL 2514/2024 
Autor: Fábio Teruel - MDB/SP
Data da apresentação:  20/06/2024 ","","","","Dispõe sobre a obrigatoriedade de divulgação pública das informações relativas ao recolhimento de produtos alimentícios pela Agência Nacional de Vigilância Sanitária (Anvisa) por motivo de inconformidade com as normas de vigilância sanitária e dá outras providências.","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2510/2024","PL 2510/2024 
Autor: Samuel Viana - REPUBLIC/MG
Data da apresentação:  20/06/2024 ","","","","Criação do Programa Nacional de Tratamento de Lesões Crônicas e dá outras providências ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2504/2024","PL 2504/2024 
Autor: Fausto Pinato - PP/SP
Data da apresentação:  20/06/2024 ","","","","Altera a Lei nº 14.543, de 3 de abril de 2023, para obrigar o poder público a fornecer atendimento a pessoas com depressão. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2499/2024 ","PL 2499/2024 
Autor: Coronel Meira - PL/PE; Dr. Fernando Máximo - UNIÃO/RO; Rodrigo Valadares - UNIÃO/SE e outros
Data da apresentação:  19/06/2024 ","","","","Dispõe sobre a obrigatoriedade da notificação à autoridade policial, pelos hospitais, clínicas e unidades básicas de saúde, da interrupção de gestação decorrente de estupro e dá outras providências. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2494/2024 ","PL 2494/2024 
Autor: Clodoaldo Magalhães - PV/PE
Data da apresentação:  19/06/2024 ","","","","Dispõe sobre a concessão de meia-entrada para profissionais de saúde, policiais, bombeiros, pessoas com autismo e seus acompanhantes, pessoas com deficiência e seus acompanhantes em eventos culturais, esportivos e de lazer. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2490/2024","PL 2490/2024
Autor: Pastor Gil - PL/MA
Data da apresentação:  19/06/2024 ","","","","Institui a obrigatoriedade do pagamento de bolsa insalubridade e remuneração aos estudantes de medicina a partir do quinto ano durante o período de internato médico e dá outras providências. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2489/2024 ","PL 2489/2024 
Autor: Castro Neto - PSD/PI
Data da apresentação:  19/06/2024 ","","","","Altera a Lei nº 13.146, de 6 de julho de 2015, Estatuto da Pessoa com Deficiência. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2488/2024 ","PL 2488/2024 
Autor: Capitão Samuel - PP/SE
Data da apresentação:  19/06/2024 ","","","","Altera o art. 4º da Lei nº 8.080, de 19 de setembro de 1990, para incluir as comunidades terapêuticas entre as ações e serviços de saúde que constituem o Sistema Único de Saúde ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2482/2024 ","PL 2482/2024 
Autor: Júnior Mano - PL/CE
Data da apresentação:  19/06/2024 ","","","","Dispõe sobre a notificação compulsória de transtornos alimentares com consequências graves à saúde física ou mental, bem como traça diretrizes ao Poder Público para o enfrentamento deste agravo à saúde. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2477/2024 ","PL 2477/2024 
Autor: Aureo Ribeiro - SOLIDARI/RJ
Data da apresentação:  19/06/2024 ","","","","Altera a Lei nº 13.733, de 16 de novembro de 2018, para incluir o câncer colorretal nas atividades da campanha do Outubro Rosa. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2476/2024 ","PL 2476/2024 
Autor: Aureo Ribeiro - SOLIDARI/RJ
Data da apresentação:  19/06/2024 ","","","","Dispõe sobre a inclusão da Estimulação Magnética Transcraniana (EMT) na lista de procedimentos do Sistema Único de Saúde (SUS). ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2471/2024","PL 2471/2024 
Autor: Clarissa Tércio - PP/PE
Data da apresentação:  19/06/2024 ","","","","Altera a Lei nº 14.254, de 30 de novembro de 2021, a fim de ampliar os cuidados aos educandos com dislexia ou Transtorno do Déficit de Atenção com Hiperatividade (TDAH) ou outro transtorno de aprendizagem. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2469/2024 ","PL 2469/2024 
Autor: Yandra Moura - UNIÃO/SE
Data da apresentação:  19/06/2024 ","","","","Institui o Programa Nacional de Cuidado Integral para os Primeiros 1000 Dias de Vida, visando a promoção da saúde, nutrição, desenvolvimento e apoio social às gestantes, crianças e suas famílias, desde a concepção até o ingresso e permanência em creches, e dá outras providências. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2466/2024","PL 2466/2024 
Autor: Legislação Participativa
Data da apresentação:  19/06/2024 ","","","","Acrescenta o art. 244-A ao Decreto-Lei nº. 2.848, de 7 de dezembro de 1940 (Código Penal), para dispor sobre o crime de abandono vacinal. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2464/2024 ","PL 2464/2024 
Autor: Marcos Tavares - PDT/RJ
Data da apresentação:  18/06/2024 ","","","","Cria a Lei de Telemedicina e Telessaúde, definindo os parâmetros para a utilização de tecnologias de comunicação e informação no atendimento à saúde. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2456/2024 ","PL 2456/2024 
Autor: Otto Alencar Filho - PSD/BA
Data da apresentação:  18/06/2024 ","","","","Altera a Lei nº 9.656, de 3 de junho de 1998, que dispõe sobre os planos e seguros privados de assistência à saúde. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2448/2024","PL 2448/2024 
Autor: Marcos Tavares - PDT/RJ
Data da apresentação:  18/06/2024 ","","","","Cria a Lei de Incentivo à Formação e Fixação de Profissionais de Saúde em Áreas de Vulnerabilidade Social. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2446/2024 ","PL 2446/2024 
Autor: Mario Frias - PL/SP
Data da apresentação:  18/06/2024 ","","","","Institui a política nacional de atenção dedicada ao cuidado e à saúde do homem, relacionada à deficiência androgênica do envelhecimento masculino e à disfunção erétil no âmbito do Sistema Único de Saúde do Governo Federal – SUS. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2425/2024 ","PL 2425/2024 
Autor: Julio Lopes - PP/RJ
Data da apresentação:  18/06/2024 ","","","","Altera a Lei nº 8.080, de 19 de setembro de 1990, para tratar da dispensação de óculos e próteses oculares aos usuários do Sistema Único de Saúde. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2408/2024 ","PL 2408/2024 
Autor: Fausto Pinato - PP/SP
Data da apresentação:  17/06/2024 ","","",""," Proíbe a utilização de termos correlatos para a descrição da causa de morte por suicídio em todos os documentos oficiais, registros médicos, laudos periciais, boletins de ocorrência, laudo do IML, atestado de óbito, publicações científicas e demais instrumentos que mencionem a causa de morte. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2403/2024 ","PL 2403/2024 
Autor: Maria Rosas - REPUBLIC/SP
Data da apresentação:  17/06/2024 ","","","","Institui a campanha nacional “Abril Marrom”, dedicada à prevenção da cegueira e à inclusão de pessoas com deficiência visual, e dá outras providências. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PL 2401/2024 ","PL 2401/2024 
Autor: Fernanda Pessoa - UNIÃO/CE
Data da apresentação:  17/06/2024 ","","","","Dispõe sobre o congelamento de óvulos para paciente em tratamento oncológico - Altera a Lei nº 9.656, de 3 de junho de 1998.","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"PDL 306/2024","PDL 306/2024 
Autor: Vinicius Carvalho - REPUBLIC/SP
Data da apresentação:  18/06/2024 ","","","","Susta o artigo 40 da Resolução CNRM Nº 17, de 21 de dezembro de 2022 que dispõe sobre o processo de seleção pública dos candidatos aos Programas de Residência Médica autorizados em Instituições Credenciadas pela Comissão Nacional de Residência e dá outras providências. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"REQ 176/2024 CFFC ","REQ 176/2024 CFFC 
Autor: Aureo Ribeiro - SOLIDARI/RJ
Data da apresentação:  19/06/2024 ","","","","Requer a realização de auditoria, juntamente com o Tribunal de Contas da União (TCU), a fim de fiscalizar a Agência Nacional de Saúde Suplementar (ANS) a respeito de sua atuação regulatória e fiscalizatória sobre as operadoras de planos de saúde. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"REQ 176/2024 CSAUDE","REQ 176/2024 CSAUDE 
Autor: Dr. Frederico - PRD/MG
Data da apresentação:  18/06/2024 ","","","","Requer o convite da Excelentíssima Senhora Ministra do Planejamento e Orçamento, Exma. Sr. Simone Tebet, para prestar esclarecimentos sobre a revisão das despesas públicas para o Orçamento de 2025, e possíveis impactos no piso constitucional da saúde. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"REQ 174/2024 CSAUDE ","REQ 174/2024 CSAUDE 
Autor: Adriana Ventura - NOVO/SP; Dimas Gadelha - PT/RJ; Iza Arruda - MDB/PE
Data da apresentação:  18/06/2024 ","","","","Requer a realização de audiência pública para debater o PL 3930, de 2023, que altera a Lei nº 12.933, de 26 de dezembro de 2013, para assegurar aos profissionais de saúde o benefício do pagamento de meia-entrada. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"REQ 43/2024 CPASF ","REQ 43/2024 CPASF 
Autor: Dr. Allan Garcês - PP/MA
Data da apresentação:  19/06/2024 ","","","","Requer a realização de audiência pública nesta Comissão com o objetivo de discutir os danos da utilização de cigarros eletrônicos. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"INC 632/2024 ","INC 632/2024 
Autor: Aureo Ribeiro - SOLIDARI/RJ
Data da apresentação:  19/06/2024 ","","","","Sugere, à Excelentíssima Ministra da Saúde, sra. Nísia Verônica Trindade Lima, indicação em que propõe a inclusão da Estimulação Magnética Transcraniana (EMT) na lista de procedimentos do Sistema Único de Saúde (SUS). ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"INC 631/2024 ","INC 631/2024 
Autor: Aureo Ribeiro - SOLIDARI/RJ
Data da apresentação:  19/06/2024 ","","","","Sugere, à Excelentíssima Ministra da Saúde, sra. Nísia Verônica Trindade Lima, indicação em que propõe a inclusão do câncer colorretal nas atividades da campanha do Outubro Rosa. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"RIC 1853/2024 ","RIC 1853/2024 
Autor: Aureo Ribeiro - SOLIDARI/RJ
Data da apresentação:  19/06/2024 ","","","","Requer informação ao Ministério da Saúde acerca das recentes notícias sobre a falta de infraestrutura e de leitos para atender crianças e os “improvisos” de médicos para salvar bebês recém-nascidos. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"RIC 1851/2024 ","RIC 1851/2024 
Autor: Saúde
Data da apresentação:  19/06/2024 ","","","","Requer que sejam solicitadas informações ao Ministério da Saúde a respeito da regulamentação da Lei nº 14.758, de 2023, que dispõe sobre a Política Nacional de Prevenção e Controle do Câncer no âmbito do Sistema Único de Saúde - SUS. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"RIC 1848/2024 ","RIC 1848/2024 
Autor: David Soares - UNIÃO/SP
Data da apresentação:  19/06/2024 ","","","","Requer, nos termos do art. 50, §2°, da Constituição Federal e art. 116 do Regimento Interno da Câmara dos Deputados, informação do Ministério da Saúde sobre medicamentos de alto custo. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"RIC 1796/2024 ","RIC 1796/2024 
Autor: Capitão Alberto Neto - PL/AM
Data da apresentação:  18/06/2024 ","","","","Requer da Excelentíssima Ministra da Saúde, Senhora Nísia Trindade, informações sobre a Síndrome de Dumping pós-bariátrica. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"
"RIC 1795/2024 ","RIC 1795/2024 
Autor: Capitão Alberto Neto - PL/AM
Data da apresentação:  18/06/2024 ","","","","Requer da Excelentíssima Ministra da Saúde, Senhora Nísia Trindade, informações sobre a antecipação de partos no Brasil. ","karlla.magalhães","Câmara dos Deputados","Não","Relevante","2024"

And that's my expected output in csv:

enter image description here


Solution

  • You can try add extra columns before (one time) like this:

    $header[] = 'URL';
    $header[] = 'ID < 1000000';
    $header[] = 'ID >= 1000000';
    fputcsv($csvFile, $header);
    

    For each line, verify if the cell has the hiperlink, after this you can extract the URL and the ID:

    foreach ($sheet->getRowIterator(2) as $row) {
        $cellIterator = $row->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(true);
    
        $rowData = [];
        $url = '';
        $id = '';
    
        foreach ($cellIterator as $cell) {
            if (!is_null($cell)) {
                $value = $cell->getCalculatedValue();
                $rowData[] = $value;
    
                if ($cell->hasHyperlink()) {
                    $hyperlink = $cell->getHyperlink();
                    $url = $hyperlink->getUrl();
                    $id = extractIdFromUrl($url);
                }
            }
        }
    
        // Adiciona a URL e os IDs às colunas apropriadas
        $rowData[] = $url;
        if (!empty($id) && $id < 1000000) {
            $rowData[] = $id;
            $rowData[] = '';
        } else if (!empty($id) && $id >= 1000000) {
            $rowData[] = '';
            $rowData[] = $id;
        } else {
            $rowData[] = '';
            $rowData[] = '';
        }
    
        fputcsv($csvFile, $rowData);
    }
    

    After that I think your code will be like above:

    <?php
    
    require 'vendor/autoload.php';
    
    use PhpOffice\PhpSpreadsheet\IOFactory;
    
    function extractIdFromUrl($url) {
        if (strpos($url, 'senado.leg.br') !== false) {
            preg_match('/\/materia\/(\d+)$/', $url, $matches);
            if (!empty($matches[1])) {
                return $matches[1];
            }
        }
    
        if (strpos($url, 'camara.leg.br') !== false) {
            preg_match('/\?idProposicao=(\d+)$/', $url, $matches);
            if (!empty($matches[1])) {
                return $matches[1];
            }
        }
    
        return '';
    }
    
    function readData($arquivo){
        $reader = IOFactory::createReader("Xls");
        $spreadsheet = $reader->load($arquivo);
        $sheet_count = $spreadsheet->getSheetCount();
        $csvFileName = 'output.csv';
        $csvFile = fopen($csvFileName, 'w');
        
        for ($i = 0; $i < $sheet_count; $i++) {
            $sheet = $spreadsheet->getSheet($i);
    
            $headerRow = $sheet->getRowIterator(1)->current();
            $cellIterator = $headerRow->getCellIterator();
            $cellIterator->setIterateOnlyExistingCells(false);
    
            $header = [];
            foreach ($cellIterator as $cell) {
                if (!is_null($cell)) {
                    $value = $cell->getCalculatedValue();
                    $header[] = $value;
                }
            }
    
            // Adiciona as novas colunas ao cabeçalho
            $header[] = 'URL';
            $header[] = 'ID < 1000000';
            $header[] = 'ID >= 1000000';
            fputcsv($csvFile, $header);
    
            foreach ($sheet->getRowIterator(2) as $row) {
                $cellIterator = $row->getCellIterator();
                $cellIterator->setIterateOnlyExistingCells(true);
    
                $rowData = [];
                $url = '';
                $id = '';
    
                foreach ($cellIterator as $cell) {
                    if (!is_null($cell)) {
                        $value = $cell->getCalculatedValue();
                        $rowData[] = $value;
    
                        if ($cell->hasHyperlink()) {
                            $hyperlink = $cell->getHyperlink();
                            $url = $hyperlink->getUrl();
                            $id = extractIdFromUrl($url);
                        }
                    }
                }
    
                // Adiciona a URL e os IDs às colunas apropriadas
                $rowData[] = $url;
                if (!empty($id) && $id < 1000000) {
                    $rowData[] = $id;
                    $rowData[] = '';
                } else if (!empty($id) && $id >= 1000000) {
                    $rowData[] = '';
                    $rowData[] = $id;
                } else {
                    $rowData[] = '';
                    $rowData[] = '';
                }
    
                fputcsv($csvFile, $rowData);
            }
        }
    
        fclose($csvFile);
        echo "CSV file generated: $csvFileName";
    }
    
    if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES['arquivo'])) {
        $route = $_FILES['arquivo']['tmp_name'];
        readData($route);
    }
    ?>