· 4 years ago · Jul 27, 2021, 12:58 PM
1<?php
2
3use PhpOffice\PhpSpreadsheet\IOFactory; //classe responsável por ler uma planilha
4
5use PhpOffice\PhpSpreadsheet\Spreadsheet; //classe responsável pela manipulação da planilha
6
7use PhpOffice\PhpSpreadsheet\Writer\Xlsx; //classe que salvará a planilha em .xlsx
8
9require 'C:/Users/diogo/vendor/autoload.php';
10
11// BLOCO PARA RECEBER E PREPARAR O ARQUIVO VIA INPUT
12if($_FILES["import_excel"]["name"] != '')
13{
14 $allowed_extension = array('xls', 'csv', 'xlsx');
15 $file_array = explode(".", $_FILES["import_excel"]["name"]);
16 $file_extension = end($file_array);
17
18 if(in_array($file_extension, $allowed_extension))
19 {
20 $file_name = time() . '.' . $file_extension;
21 move_uploaded_file($_FILES['import_excel']['tmp_name'], $file_name);
22 $file_type = \PhpOffice\PhpSpreadsheet\IOFactory::identify($file_name);
23 $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($file_type);
24
25 $spreadsheet = $reader->load($file_name);
26
27 unlink($file_name);
28
29// VARIAVEL CAPTURA DADOS DA PLANILHA TORNA ATIVA E PREPARA PARA O LAÇO
30$worksheet = $spreadsheet->getActiveSheet();
31$highestRow = $worksheet->getHighestRow();
32$highestColumn = $worksheet->getHighestColumn();
33$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
34
35// LAÇO DAS LINHAS DO EXCEL, SALVANDO AS CEDULAS EM VARIAVEIS PARA CONSULTA NA API GMAPS **COMEÇANDO DA 2 LINHA**
36for ($row = 2; $row <= $highestRow; ++$row) {
37 $nome = $worksheet->getCell( 'A'.$row.'' )->getValue();
38 $rua = $worksheet->getCell( 'B'.$row.'' )->getValue();
39 $numero = $worksheet->getCell( 'C'.$row.'' )->getValue();
40 $bairro = $worksheet->getCell( 'D'.$row.'' )->getValue();
41 $cidade = $worksheet->getCell( 'E'.$row.'' )->getValue();
42 $estado = $worksheet->getCell( 'F'.$row.'' )->getValue();
43// CHAMANDO ARQUIVO COM CLASSE DA API GMAPS
44 require_once 'snippet.php';
45// DEFININDO ENDEREÇO DE BUSCA NA API DE ACORDO COM ENDEREÇO CAPTURADO NA PLANILHA
46 $endereco = $rua.', '.$numero.','.$bairro.', '.$cidade.', '.$estado;
47 $dados = (array)$gmaps->geoLocal($endereco);
48 // PERCORE RETORNO DA API, ALTERANDO NOME DO INDICE (CASO PRINTE NA WEB)
49 foreach ($dados as $key => $value) {
50 $newArray['Latitude:'] = $dados['lat'];
51 $newArray['Longitude:'] = $dados['lng'];
52 }
53
54 $sheet = $spreadsheet->getActiveSheet(); //retornando a aba ativa
55 $sheet->setCellValue('G'.$row.'', $newArray['Latitude:']); //Definindo a célula da Latitude
56 $sheet->setCellValue('H'.$row.'', $newArray['Longitude:']); //Definindo a célula da Longitude
57// LAÇO DAS COLUNAS DO EXCEL UTILIZANDO A FUNÇÃO DA LIB PARA JUNTAR COLUNA E LINHA E RECEBER O VALOR
58 for ($col = 1; $col <= $highestColumnIndex; ++$col) {
59 $value = $worksheet->getCellByColumnAndRow($col, $row)->getValue();
60 }
61}
62// MESAGEM PARA SUCESSO
63$message = '<div class="alert alert-success">Latitude e longitude capturadas com sucesso!</div>';
64echo $message;
65
66$writer = new Xlsx($spreadsheet); //Instanciando uma nova planilha
67$writer->save('teste.xlsx'); //salvando a planilha na extensão definida
68
69//BOTÃO DOWNLOAD
70$button = '<a class="btn btn-warning" href="teste.xlsx" role="button">BAIXAR</a><br><br>';
71echo $button;
72
73 }
74}